c#WPF ListView显示数据的任一分组,但不能同时显示两个分组
我在窗口上有一个绑定的ListView,我已经设置了XAML来进行分组,但是当我尝试应用它时,我要么只获取数据,要么不获取数据进行分组。XAML如下所示:c#WPF ListView显示数据的任一分组,但不能同时显示两个分组,c#,wpf,xaml,listview,C#,Wpf,Xaml,Listview,我在窗口上有一个绑定的ListView,我已经设置了XAML来进行分组,但是当我尝试应用它时,我要么只获取数据,要么不获取数据进行分组。XAML如下所示: <ListView x:Name="lvNav" HorizontalAlignment="Left" Height="100" Margin="331,41,0,0" VerticalAlignment="Top" Width="166"> <ListView.View> <GridVi
<ListView x:Name="lvNav" HorizontalAlignment="Left" Height="100" Margin="331,41,0,0" VerticalAlignment="Top" Width="166">
<ListView.View>
<GridView>
<GridViewColumn Header="Customer" DisplayMemberBinding="{Binding serviceID}" />
<GridViewColumn Header="S/N" DisplayMemberBinding="{Binding machineID}" />
</GridView>
</ListView.View>
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Expander IsExpanded="True">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" FontWeight="Bold" />
</StackPanel>
</Expander.Header>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
加载数据的代码为:
System.Data.Entity.DbSet<srsr> srsrs = _fa.srsrs;
srsrs.Load();
lvNav.ItemsSource = srsrs.Local;
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lvNav.ItemsSource);
PropertyGroupDescription pgd = new PropertyGroupDescription("stateID");
view.GroupDescriptions.Add(pgd);
System.Data.Entity.DbSet srsrsrs=\u fa.srsrsrs;
srsrs.Load();
lvNav.ItemsSource=srsrsrs.Local;
CollectionView视图=(CollectionView)CollectionViewSource.GetDefaultView(lvNav.ItemsSource);
PropertyGroupDescription pgd=新的PropertyGroupDescription(“stateID”);
view.GroupDescriptions.Add(pgd);
我假设我在这里遗漏了一些相对简单的东西,所以希望有人能给我指出正确的方向。如果你想使用
MVVM
方法,即没有代码隐藏,你可以使用以下方法:
<CollectionViewSource Source="{Binding PropertyOnYourVM}" x:Key="NameOfTheGrouping">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="PropertyToGroupOn"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
然后,您可以在ListView上这样使用它:
<ListView ItemsSource="{Binding Source={StaticResource NameOfTheGrouping}}">
<ListView.GroupStyle>
<GroupStyle ContainerStyle="{StaticResource YourStyleNameHere}"/>
</ListView.GroupStyle>
但由于您没有使用MVVM,因此必须在代码隐藏中进行操作。顺便说一句:您忘记了xaml中的
,它介于
和之间,谢谢!添加解决了这个问题!哇,那真的很烦人。如果你添加了一个样本,那么它应该是一个有效的。。。您不能将“ContainerStyle”属性设置为CollectionViewsource对象……实际上,您将CollectionViewSorce放置在Window.Resources中,并将Listview的ItemsSource属性绑定到此对象。参考这里