在一个单独的项目中,我有一个反序列化的 xml 文件,其中包含我想在我的 WPF 应用程序中使用的字符串,这些字符串也在同一解决方案的不同项目中使用,所以我不能只移动这些字符串转到持有 wpf 应用程序的项目。
程序结构如下:
项目 A 引用 B 和 C
- 带有事件处理程序的 WPF 应用程序
项目 B 引用 C
- F# 中的 GUI 逻辑
项目 C
- XML 资源文件和反序列化器(用 F# 编写)
有没有办法根据反序列化的 xml 文件中的对象制作资源或资源字典?或者我可以直接引用存储在 xml 文件中的字符串吗?
最佳答案
我建议您使用内置的 .resx 文件,它默认包含在新创建的 WPF 应用程序中。 (您也可以稍后使用 Project -> Add New Item... -> Resource File
添加它。)只需确保将访问修饰符设置为“Public”,您就可以在引用当前项目的其他项目中使用字符串:
您将能够通过自动生成的强类型包装类访问字符串(以及其他资源!):
MessageBox.Show(WpfApplication1.Properties.Resources.String1);
您还可以使用 XAML 为存储在此文件中的字符串设置属性,使用 x:Static markup extension ,如(例如)this answer 中所述:
xmlns:resx="clr-namespace:WpfApplication1.Properties;assembly=WpfApplication1"
Title="{x:Static resx:Resources.String1}"
此外,您将获得漂亮的 Visual Studio 内置 UI,用于编辑文件(在图片中也可见)。
关于c# - WPF 中基于对象的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18813423/