【发布时间】:2011-10-24 17:52:19
【问题描述】:
我有一个 XmlDataProvider、一个 ListBox 和一个 DataGrid。 底层的xml文件有这样的结构:
<Root>
<Person name="test">
<item name="bla" value="test"/>
<item name="bla" value="test2"/>
</Person>
<Root>
ListBox 列出所有人员,而 DataGrid 列出所有项目,对应于选定的人员。这按预期工作。 现在我想对 DataGrid 中的数据进行分组,但是在查看了示例后,我仍然不知道如何使用 XmlDataProvider(如何/在何处从 XmlDataProvider 创建 ListCollectionView)。 有人可以给我一个快速的 xaml 示例,例如按名称对项目进行分组吗?:) 提前感谢您的帮助:)
问候
更新: 现在分组工作了,但是当我向 xml 添加一些东西时,它不再立即显示(在列表框或数据网格中)。出了什么问题?我对 wpf 真的很陌生,所以可能会有多余或不必要的东西,你指出它们我没有问题:) 以下是使用的相关代码:
<Grid.DataContext>
<XmlDataProvider x:Name="XmlData" Source="entries.xml" XPath="Root/Person" />
</Grid.DataContext>
<ListBox Name="PersonListBox"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource listBoxTemplate}"
IsSynchronizedWithCurrentItem="True"
Visibility="Visible" SelectionMode="Single" SelectedIndex="-1" DataContext="{Binding}">
</ListBox>
<DataGrid IsSynchronizedWithCurrentItem="True" Name="itemGrid"
DataContext="{Binding ElementName=PersonListBox, Path=SelectedItem}"
CanUserAddRows="true"
IsReadOnly="true"
AutoGenerateColumns="False">
<DataGrid.Resources>
<CollectionViewSource x:Key="items" Source="{Binding XPath=item}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="@name"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</DataGrid.Resources>
<DataGrid.ItemsSource>
<Binding Source="{StaticResource items}"/>
</DataGrid.ItemsSource>
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="Name" Binding="{Binding XPath=@name}"/>
<DataGridTextColumn Header="Wert" Binding="{Binding XPath=@value}"/>
</DataGrid.Columns>
<DataGrid.GroupStyle>
<GroupStyle />
</DataGrid.GroupStyle>
</DataGrid>
【问题讨论】:
标签: wpf xaml datagrid xmldataprovider