【问题标题】:How to bind to a "x:static" resource in code-behind in WPF如何在 WPF 的代码隐藏中绑定到“x:static”资源
【发布时间】:2011-09-28 08:11:52
【问题描述】:

对于一些用户控件,我有这个绑定:

AppLanguage="{Binding Path=ApplicationLanguage, Source={x:Static Application.Current}}"

这适用于在 XAML 中声明/实例化的控件。但是,我有一个仅动态实例化的控件(它不会经常使用,所以我不希望实例(实际上最多 3 个)一直吞噬内存。现在,除非我我错过了一些东西,我必须在代码隐藏中声明我的绑定。当我有一个简单的(ElementName + Path)时,这很好用,但在上述情况下,我无法弄清楚如何在代码隐藏中编写它.

当然,在这种特殊情况下,控件可以简单地引用 My.Application.ApplicationLanguage,但无论如何尝试这样做让我很好奇。我做了很多搜索,但找不到任何类似的东西(虽然可能是我的搜索关键字。:))

【问题讨论】:

    标签: wpf


    【解决方案1】:

    x:Static 只是为你解析了一个static 成员,所以你可以写成:

    var binding = new Binding("ApplicationLanguage");
    binding.Source = Application.Current;
    

    也就是说,我不明白为什么您认为需要在代码中执行此操作。

    【讨论】:

    • 这项工作 - 谢谢。我将 Application.Current 放在双引号之间(实际上我不知道这是否可行 - 我有另一个由事件引起的问题 - 现在全部修复。)我在代码隐藏中这样做是因为(我认为) 如果我把它放在容器中的 XAML 中,无论如何都会实例化用户控件。我可能在这里遗漏了一些东西 - 我仍在探索 WPF,所以有些事情并不总是显而易见的。 :)
    猜你喜欢
    • 2010-10-20
    • 2012-07-15
    • 2012-05-30
    • 2011-01-08
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 2020-07-29
    • 2021-07-19
    相关资源
    最近更新 更多