我有一个XmlDataProvider,一个ListBox和一个DataGrid。 底层的XML文件中有这样的结构:使用XmlDataProvider编组DataGrid源代码
<Root>
<Person name="test">
<item name="bla" value="test"/>
<item name="bla" value="test2"/>
</Person>
<Root>
列表框列出了所有的人,而DataGrid中列出的所有项目,相应的被选择的人。这按预期工作。 现在我想分组DataGrid中的数据,但看看例子我仍然没有得到如何用XmlDataProvider(如何/在哪里创建一个ListCollectionView关闭的XmlDataProvider)做到这一点。 可能有人请给我一个快速的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 [email protected]}"/>
<DataGridTextColumn Header="Wert" Binding="{Binding [email protected]}"/>
</DataGrid.Columns>
<DataGrid.GroupStyle>
<GroupStyle />
</DataGrid.GroupStyle>
</DataGrid>
感谢了很多,就像一个魅力:)我真的开始爱上WPF ^^ – ch40s
OK,这是太快了,现在改变XML不会立即显示,但只有当我重新加载,更新的问题:) – ch40s
OK谢幕,没关系。我将CollectionViewSource的Source改为{Binding XPath = item},现在它工作:)再次感谢 – ch40s