【问题标题】:Default ValueConverter for a class in WPFWPF 中类的默认 ValueConverter
【发布时间】:2010-10-11 22:46:45
【问题描述】:

我即将开始我的一个新项目,目前正在评估一些本地化、模块化等技术。

我(至少在我看来)有一个非常好的本地化方法,但现在我很难找到一个好的数据绑定解决方案。

我想将文本字段等(通常是 UIElements)的值绑定到表单的 DataContext 中的特定方法。该方法如下所示:

public void GetValue(string name)

其中 name 是“节点/子节点/子子节点”形式的“路径”。我考虑过使用 ValueConverter 进行绑定,到目前为止效果还不错。

我的绑定表达式如下所示:

{Binding Path=Localization, Converter={StaticResource LocalizationConverter}, ConverterParameter=PrismBreak/Shell.xaml/New}

我认为这个绑定表达式虽然完成了它的工作,但对于每一个 UIElement 都使用得有点夸张。所以我想是否可以为某种类型定义一个默认的 ValueConverter(--> 每当该类型绑定到使用 ValueConverter 的某个地方时)。

在 WPF 中可以吗?

如果不可能,有没有其他好的方法可以绑定到具有动态参数的方法?

在此先致谢并致以最诚挚的问候,

克里斯

【问题讨论】:

    标签: c# wpf default converter


    【解决方案1】:

    为 WPF 进行本地化的规定方法是在附属程序集中创建本地化 BAML;这是通过将x:Uid 附加属性添加到您希望本地化的元素来实现的。 MSDN 上有一个很好的WPF Globalization and Localization 部分描述了这些技术。

    我建议的另一种方法是创建一个静态的“本地化字典”类型,并实现ICustomTypeDescriptor,将传入的属性绑定重定向到字典中的字符串。你最终可能会做这样的事情:

    <Button Content="
        {Binding Source={x:Static local:MyStaticType.Localization}, 
                 Path=HelloButtonTitle}" /> 
    

    您可以继续利用现有技术,例如 RESX + Satellite 程序集。

    【讨论】:

    • 我用谷歌搜索了一下,现在找到了关于如何使用自定义属性实现 ICustomTypeDescriptor 的解释,现在它正在工作!感谢您的想法!
    • 如果有人感兴趣:msdn.microsoft.com/en-us/magazine/cc163816.aspx 帮了我很多忙。
    猜你喜欢
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 2010-10-31
    • 2011-01-15
    • 2020-05-14
    • 2013-05-23
    相关资源
    最近更新 更多