我有一台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中添加一些东西时,它不再立即显示(在列表框或数据网格中).What是错误的吗?我真的是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>发布于 2011-10-24 07:52:46
下面是一个例子,应该是不言自明的,但如果有什么不清楚的地方,请随时询问:
<DataGrid>
<DataGrid.Resources>
<CollectionViewSource x:Key="items" Source="{Binding SelectedItem, ElementName=lb}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="@name"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</DataGrid.Resources>
<DataGrid.ItemsSource>
<Binding Source="{StaticResource items}"/>
</DataGrid.ItemsSource>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding XPath=@value}"/>
</DataGrid.Columns>
<DataGrid.GroupStyle>
<GroupStyle />
</DataGrid.GroupStyle>
</DataGrid>(您也可以在ListBox上将设置为true,然后通过当前项绑定Source (即{Binding /, Source={StaticResource data}}__) )
https://stackoverflow.com/questions/7868706
复制相似问题