0
我有一個用例,我需要將XML文件中的數據綁定到WPF DataGrid。我準備了這個例子來說明我在最終的代碼中會做什麼。如何將XML與命名空間綁定到WPF DataGrid?
這是Books.xml的:
<?xml version="1.0" encoding="utf-8" ?>
<library>
<books>
<book id="1" name="The First Book" author="First Author">
First Book Content
</book>
<book id="2" name="The Second Book" author="Second Author">
Second Book Content
</book>
</books>
</library>
這裏是我如何將它綁定我DataGrid控件。第一XAML:
<Window x:Class="LinqToXmlBinding.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
Title="Window1" Height="300" Width="400">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="268*" />
<ColumnDefinition Width="110*" />
</Grid.ColumnDefinitions>
<toolkit:DataGrid Name="xmlBoundDataGrid" Margin="1" ItemsSource="{Binding Path=Elements[book]}">
<toolkit:DataGrid.Columns>
<toolkit:DataGridTextColumn Header="Book ID" Binding="{Binding Path=Attribute[id].Value}"/>
<toolkit:DataGridTextColumn Header="Book Name" Binding="{Binding Path=Attribute[name].Value}"/>
<toolkit:DataGridTextColumn Header="Content" Binding="{Binding Path=Value}"/>
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
<StackPanel Name="myStackPanel" Grid.Column="1">
<Button Name="bindToXmlButton" Click="bindToXmlButton_Click">Bind To XML</Button>
</StackPanel>
</Grid>
</Window>
然後,C#代碼:
const string _xmlFilePath = "..//..//Books.xml";
private void bindToXmlButton_Click(object sender, RoutedEventArgs e)
{
XElement books = XElement.Load(_xmlFilePath).Element(myNameSpace + "books");
xmlBoundDataGrid.DataContext = books;
}
現在,如果我在Books.xml的根元素定義的XML命名空間是http://my.namespace.com/books
;我知道我可以得到該命名空間編程就像這樣:
XNamespace myNameSpace = XElement.Load(_xmlFilePath).Attribute("xmlns").Value;
但是,我怎麼能以訪問「書」元素檢索該命名空間中的XAML?這方面的最佳做法是什麼?
非常感謝。
這將有所幫助,但XAML不接受「ns:book」這樣的引用。刪除引號會引發異常。根據你的想法,我也玩過一些東西,但沒有運氣。 謝謝,如果您有更多想法,請與我分享。 – mbadawi23 2010-06-23 22:58:28
您是否看到這篇文章? http://msdn.microsoft.com/en-us/library/cc165615.aspx – STO 2010-06-24 08:41:43
非常感謝您的幫助。 – mbadawi23 2010-06-25 14:14:11