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

时间:2012-07-04 15:53:40

标签: c# wpf xaml binding resources

我正在尝试添加资源,这是一个标准的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'的资源。资源   名称区分大小写。“}。

知道如何从代码中引用资源吗?

感谢。

2 个答案:

答案 0 :(得分:4)

我目前无法访问C#编译器,因此无法尝试,但尝试在添加资源后移动InitializeComponent()。 InitializeComponent执行XAML中指定的所有内容,但此时绑定的资源不存在。

答案 1 :(得分:0)

您好,您可以尝试动态资源(类型资源不匹配)

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