c# - 如何添加资源 : xml file

标签 c# wpf xml resources

我目前正在使用以下 XAML 代码将我的 xml 文件添加为资源:

<XmlDataProvider x:Key="MyData"  Source="D:\myfile.xml" XPath="Books/Book" />

现在我想使用 %appdata% 文件夹中的这个 myfile.xml,以获得更多的可移植性。显然,使用 Source="%appdata%\myfile.xml" 不起作用,因为 XAML 似乎不接受“%”字符。

因此我想在我的主窗口代码中以编程方式添加此资源。我试过了:

public MainWindow()
{
    this.Resources.Add("MyData", "D:\\myfile.xml");
    InitializeComponent();
}

但是我在 Resources.Add 方法中没有可用的 XPath="" 属性,因此应用程序无法正常工作。

有没有办法设置这个属性?还是我做错了?

对此没有谷歌答案。

非常感谢。

最佳答案

您可以在代码隐藏中使用此代码段:

public MainWindow()
{
    XmlDataProvider provider = new XmlDataProvider()
    provider.Source = new Uri(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\myfile.xml");
    provider.XPath = "Books/Book";
    this.Resources.Add("MyData", provider);
}

这是添加资源的正确代码,因为

 this.Resources.Add("MyData", "D:\\myfile.xml");

将向 Recources 添加一个带有键“MyData”和值“D:\myfile.xml”的字符串

或者您仍然可以使用 XAML 声明,然后在构造函数中添加:

(this.Resources["MyData"] as XmlDataProvider).Source = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\myfile.xml";
(this.Resources["MyData"] as XmlDataProvider).XPath = "Books/Book";

我建议最后一种解决方案。

关于c# - 如何添加资源 : xml file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5841525/

相关文章:

javascript - C# Regex.Split 的工作方式与 JavaScript 不同

c# - 检查列表中属性的不同值(空值除外)

c# - 如何提高 FlowDocumentScrollViewer 的性能?

c# - 使用 "mahapps.metro"KeyUp 事件加倍

.net - 如何从 WPF 中的另一个线程读取 textbox.Text 值?

c# - 基于值的 XSL 匹配元素

c# - VisualStudio 错误 : An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System. Data.dll

javascript - .Html JQuery 在 IE 中不起作用

c# - XML结构问题

java - 更快的多重解析 : SAX or DOM