c# - WPF 中基于对象的资源

标签 c# xml wpf xaml resource-files

在一个单独的项目中,我有一个反序列化的 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”,您就可以在引用当前项目的其他项目中使用字符串:
Public Resx File
您将能够通过自动生成的强类型包装类访问字符串(以及其他资源!):

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/

相关文章:

c# - Asp.net Core IoC 类型工厂

html - 如何突出显示 XSLT 中的特定行

WPF UserControl 交换并保留键盘焦点

c# - 具有自定义命名空间的 XmlSerializer

c# - 使用 C# 和 RavenDB 的自定义字段设计

php - 使用命名空间 PHP 从 SOAP 输出中获取数据

javascript - 在 javascript 中解析 UTF-8 XML

wpf - 条件绑定(bind)属性不起作用?

wpf - 我需要创建一个使用 WCF 的小型 HMI/SCADA WPF 应用程序

c# - string.IndexOf 在 .NET 5.0 中返回不同的值