从代码后台添加资源并在XAML中使用

3

我试图添加一个资源,这个资源是一个标准的IValueConverter实例。我想在XAML中使用这个转换器,但是我得到了一个异常,说没有找到提供的键对应的资源。

下面是代码:

    public CallLogs(IMessenger messenger, IKernel kernel)
    {
        InitializeComponent();

        _kernel = kernel;
        var phoneToContactConverter = _kernel.Get<PhoneNumberToContactConverter>();
        Resources.Add("PhoneNumberToContactConverter", phoneToContactConverter);
    }

以下是XAML代码:

<TextBlock Text="{Binding Number, Converter={StaticResource PhoneNumberToContactConverter}, ConverterParameter={Binding}}" />

我收到了一个异常,提示:

{"找不到名为 'PhoneNumberToContactConverter' 的资源。资源名称区分大小写。"}

你有什么想法可以在代码后台引用资源吗?

谢谢。


@vossad01 谢谢,它起作用了 :). 你能否把这个评论发布为答案,这样我就可以接受它了? :) - Davita
为什么不在您的页面上创建一个(依赖)属性并进行绑定,而不是将某些内容放入资源中呢? - Kek
2个回答

4

我目前没有访问C#编译器的权限,因此无法尝试,但是请尝试在添加资源后将InitializeComponent()移动。InitializeComponent执行XAML中指定的所有操作,但您绑定到的资源此时尚不存在。


看起来很好,一目了然。谢谢! - Ignacio Soler Garcia

0

你可以尝试使用动态资源(资源类型不匹配)

<TextBlock Text="{Binding Number, Converter={DynamicResource PhoneNumberToContactConverter}, ConverterParameter={Binding}}" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接