我有一个 wpf 窗口,我在其中通过 XMLDataProvider 使用 xml 数据。屏幕基于网格,所有数据都正确显示,已将 xml 定义如下...
<Grid.DataContext>
<XmlDataProvider x:Name="Data" XPath="Book/Page" />
</Grid.DataContext>
在后面的代码中设置 xml 源代码如下...
InitializeComponent();
string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase);
Data.Source = new Uri(appPath + @"\SNG.xml");
到目前为止一切都很好。但是现在我需要从后面代码中的 xml 文件中读取其中一个元素。我所有的搜索以及我发现的唯一方法是将其绑定到一个不可见的控件,然后从控件中读取数据。例如,从 xml 中读取 BookRef 我在 xaml 中有以下内容...
TextBlock Name="BookRefTextBox" Visibility="Hidden" Text="{Binding XPath=@BookRef}"/>
然后在后面的代码中......
string bookRef = BookRefTextBox.Text;
这行得通,然后我可以使用来自 xml 文件的数据......但它真的感觉像一个软糖。有没有更好的方法从代码隐藏部分中获取部分 xml 文件的值。
编辑:
忘了说我也试过把XmlDataProvider
inWindows.Resources
而不是 inGrid.DataContext
作为我发现的一些例子。
但是,我找不到在后面的代码中设置 xml 文件路径的方法。添加到其中将其放入 Windows.Resource 不会更容易找到如何访问 Xml 文件中的数据。
EDIT2: 这是 XML 文件的示例。注意有多本书。
<Books>
<Book Id="1" BookRef="12345" Name="My Book Name" Author="Author" Pages="2" >
<Page PageId="1"/>
<Page PageId="2"/>
</Book>
<Book Id="1" BookRef="67890" Name="My Second Book Name" Author="Author 2" Pages="1" >
<Page PageId="1"/>
</Book>
</Books>