XmlDataProvider、ListBox、および DataGrid があります。基になる xml ファイルには、次のような構造があります。
<Root>
<Person name="test">
<item name="bla" value="test"/>
<item name="bla" value="test2"/>
</Person>
<Root>
ListBox にはすべての人がリストされ、DataGrid には選択された Person に対応するすべての項目がリストされます。これは意図したとおりに機能します。今、私は 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>