【问题标题】:Add resource from codebehind and use in XAML从代码隐藏添加资源并在 XAML 中使用
【发布时间】:2012-07-04 15:53:40
【问题描述】:

我正在尝试添加一个资源,它是一个标准的 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 谢谢它的工作:)。您能否将此评论作为答案发表,以便我接受? :)
  • 为什么不在你的页面上创建一个(依赖)属性并绑定它,而不是在资源中放置一些东西......

标签: c# wpf xaml binding resources


【解决方案1】:

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

【讨论】:

  • 看过之后感觉很好很明显。谢谢!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    相关资源
    最近更新 更多