对于本地化,我每个XAML文件都有一个resx文件。它们位于相同的目录和命名空间中。 resx名称对应于附加了 Resources 一词的XAML名称。
我访问这样的资源:
<TextBlock Text="{x:Static r:MainWindowResources.SomeText}"/>
因为我发现这个很长(并且甚至有更长的类名),我想知道是否有某种方法可以定义MainWindowResources的别名。在C#中,我可以使用using指令。
如果生成的资源文件包装器不是具有静态属性的类,那将会容易得多。一种可能的解决方案是使用从DynamicObject继承的包装器实例。您可以传递一个类型并通过它访问类型的静态成员。然后,您将此包装器的实例添加为XAML中的资源。
但我失去了智能感知支持,它可能也不会在性能方面表现出色。
另一种解决方案是使用WPF本地化扩展,但我也失去了IntelliSense支持。另外,我是否还有其他方法可以为静态类创建别名。 :)
答案 0 :(得分:0)
不,没有办法简单地在Xaml中为类名设置别名,就像在C#中使用using
一样。
使用短名称的自定义标记扩展可能是您可以做的最好的,但正如您所说,您将失去编辑器完成支持。如果你真的很绝望,你可以编写一个T4模板,为你的资源文件中的每个字符串生成一个带有一个值的枚举,然后你可以使用枚举值作为带有完成支持的标记扩展参数(例如,{{ 1}}),但这似乎只是为了缩短一些Xaml属性而做的很多工作,而且它们 的时间要短得多。
我会坚持你所拥有的。