XAML中的数据绑定资源文件
对于本地化我在.NET中使用资源文件(.resx文件)function,但我想知道是否有一种智能方法可以直接在XAML中对各种本地化属性进行数据绑定?
资源文件似乎只暴露静态属性,我无法弄清楚如何从viewmodel或其他资源字典绑定。
此外,如果可能的话,我希望它能在设计时与Expression Blend一起工作。
我就是这样做的。
WPF:
-
创建一个资源文件,并在同一个程序集中创建一个具有公共构造函数的类。 确保资源文件标记为public。
-
在您的xaml文件中 – 在命名空间中添加对此位置的引用
xmlns:res="clr-namespace:MyProject.StringResources"
-
对于您的文本属性,请使用以下绑定
TextProperty="{x:Static res:ResourceFileName.ResourceKey}"
Silverlight的:
-
按照上面的步骤1和2,然后将资源文件作为资源添加到用户控件或应用程序级资源中:
-
对于text属性,请使用以下绑定:
TextProperty="{Binding ResourceKey, Source={StaticResource resourceLabels}}"
与Geek提出的非常相似,但我认为甚至更容易一些:
在同一个程序集中创建一个类,它inheritance资源文件并公开一个公共构造函数,然后使用该类。
public class ResourcesProxy : Properties.Resources { /// /// resolves the problem of internal constructor in resources.designer.cs /// in conjunction with xaml usage /// public ResourcesProxy() : base() { } }