我目前正在使用以下XAML代码将我的xml文件添加为资源:
<XmlDataProvider x:Key="MyData" Source="D:\myfile.xml" XPath="Books/Book" />
现在我想使用%appdata%文件夹中的myfile.xml来获得更多的可移植性。显然,使用 Source =“%appdata%\ myfile.xml”不起作用,因为似乎XAML中不接受“%”char。
因此,我想在我的主窗口代码中以编程方式添加此资源。我试过了:
public MainWindow()
{
this.Resources.Add("MyData", "D:\\myfile.xml");
InitializeComponent();
}
但是,我在Resources.Add方法中没有 XPath =“”属性,因此应用程序无法正常工作。
有没有办法设置这个属性?或者我做错了吗?
没有谷歌回答这个问题。
非常感谢。
答案 0 :(得分:0)
您可以在代码隐藏中使用此代码段:
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";
我建议最后一个解决方案。