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’的资源。资源名称区分大小写。”}。

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

谢谢。

4

2 回答 2

4

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

于 2012-07-04T16:01:41.447 回答
0

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

<TextBlock Text="{Binding Number, Converter={DynamicResource PhoneNumberToContactConverter}, ConverterParameter={Binding}}" />
于 2012-07-04T15:56:48.393 回答