【发布时间】:2014-11-06 17:36:32
【问题描述】:
对于本地化,每个 XAML 文件都有一个 resx 文件。它们位于相同的目录和命名空间中。 resx 名称对应于附加了单词 Resources 的 XAML 名称。
我像这样访问资源:
<TextBlock Text="{x:Static r:MainWindowResources.SomeText}"/>
因为我发现这很长(而且还有更长的类名),所以我想知道是否有某种方法可以定义 MainWindowResources 的别名。在 C# 中,我可以使用 using 指令来做到这一点。
如果生成的资源文件包装器不是具有静态属性的类,那会容易得多。一种可能的解决方案是使用继承自 DynamicObject 的包装器实例。您可以向它传递一个类型并通过它访问该类型的静态成员。然后,您需要将此包装器的一个实例添加为 XAML 中的资源。
但我会失去对 IntelliSense 的支持,而且在性能方面也可能不会很好。
另一种解决方案是使用 WPF 本地化扩展,但我也会失去 IntelliSense 支持。另外,我很好奇是否有任何其他方法可以为静态类创建别名。 :)
【问题讨论】:
标签: c# .net wpf xaml localization