Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#WPF ListView显示数据的任一分组,但不能同时显示两个分组_C#_Wpf_Xaml_Listview - Fatal编程技术网

c#WPF ListView显示数据的任一分组,但不能同时显示两个分组

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,我已经设置了XAML来进行分组,但是当我尝试应用它时,我要么只获取数据,要么不获取数据进行分组。XAML如下所示:

<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属性绑定到此对象。参考这里