如何将XML数组项的子元素绑定到DataGridColumn?

时间:2017-11-29 07:46:33

标签: xml wpf xml-binding

问题

我有一个带有一系列项目的XML文件。我可以正确绑定到项目列表以及节点上的属性。但是,我无法绑定任何子元素,也无法确定要使用的XPathPath。如何将数组项的子元素绑定到DataGridColumn

更多细节

我有一个.rdl文件,它基本上是XML,并且希望批量添加图像,而SSRS并不这样做。为了解决这个问题,我创建了一个带有XmlDataProvider的WPF应用程序,如下所示:

<UserControl.DataContext>
    <XmlDataProvider x:Name="dpReport" Source="MyFile.rdl" XPath="rd:Report/rd:EmbeddedImages/rd:EmbeddedImage" />
</UserControl.DataContext>

我必须在XAML和代码隐藏中的NameTable中添加rd前缀,否则它不会绑定。

我有一个DataGrid,它正确绑定到列表,还有一个正确绑定到属性Name的列。但是,我还想绑定到MIMETypeImageData子元素。我该怎么做?

简化DataGrid Xaml

<DataGrid x:Name="lstImages" AutoGenerateColumns="False" ItemsSource="{Binding}" Grid.Row="2">
    <DataGrid.Columns>      
        <DataGridTextColumn Header="Name" Binding="{Binding XPath=@Name,Mode=TwoWay}"/>
        <!-- MIMEType Here -->
    </DataGrid.Columns>
</DataGrid>

尝试了XPath:

我试图使用以下绑定的变体:

<DataGridTextColumn Header="MimeType" Binding="{Binding XPath=MIMEType}"/>
<DataGridTextColumn Header="MimeType" Binding="{Binding XPath=MIMEType/text()}"/>
<DataGridTextColumn Header="MimeType" Binding="{Binding XPath=/MIMEType[1]/text()}"/>
<DataGridTextColumn Header="MimeType" Binding="{Binding XPath=MIMEType[1]/text()}"/>
<DataGridTextColumn Header="MimeType" Binding="{Binding XPath=(/MIMEType/text())[0]}"/>
<DataGridTextColumn Header="MimeType" Binding="{Binding XPath=(MIMEType/text())[0]}"/>

0 个答案:

没有答案