wpf 元素名称作为 IValueConverter 的参数

wpf element name as an argument for IValueConverter

我正在尝试获取 wpf 中给定元素名称的多语言翻译 ("label or caption") 字符串值。 例如;对于元素名 "txtDescription" ;我的 IValueConverter 实现将 return 和 "Description" ;对于另一种语言,将 return 不同的翻译字符串(即西班牙语的描述),翻译字符串将是相同元素的 Text=...。

我是wpf新手;我不能让它工作。有没有什么优雅的方法可以用类似下面的方式做到这一点。

<TextBlock Name="txtDescription" Text="{Binding Converter={StaticResource MultiLingualConverter} }"</TextBlock>

如果这不简单或需要更多代码,那么作为替代方案发送 "txtDescription" 作为 MultiLingualConverter 的参数是可以接受的,但我现在也不知道该怎么做。

您可以通过 ConverterParameter 传递元素名称 属性,this 是如何使用它向转换器传递字符串的示例。

但是,WPF 本地化不仅仅是为不同的语言返回不同的字符串。您可以阅读 this article 了解更多信息,页面中有一个 运行 对话框示例可以帮助您入门。

由于循环依赖性限制,您不能在树中引用自身或其后代中的控件。 我建议您不要使用转换器来支持多语言。这不是最好的方法。 来这里是为了最好的方法。 https://msdn.microsoft.com/en-us/library/ms745650(v=vs.110).aspx

当然,您应该在您的系统中构建良好的本地化支持,而不是为每个字符串使用转换器。

直到今天,我发现并且几乎一直使用的最佳解决方案是:

http://blogs.microsoft.co.il/tomershamam/2007/10/30/wpf-localization-on-the-fly-language-selection/

试一试。祝你好运