C# CollectionViewSource实时排序不起作用

C# CollectionViewSource实时排序不起作用,c#,wpf,xaml,collectionviewsource,C#,Wpf,Xaml,Collectionviewsource,我创建了一个用户控件,其中包含一个通过CollectionViewSource绑定的ListBox。列表框中有复选框供用户进行多项选择。我希望列表与顶部选中的复选框一起排序。我希望当用户选择或取消选择某个内容时,这项功能就会起作用。我似乎找不到任何东西可以通过xaml实现这一点。我做错了什么 在我的xaml中 <CollectionViewSource x:Key="SortedItems" Source="{Binding Items, Ele

我创建了一个用户控件,其中包含一个通过CollectionViewSource绑定的ListBox。列表框中有复选框供用户进行多项选择。我希望列表与顶部选中的复选框一起排序。我希望当用户选择或取消选择某个内容时,这项功能就会起作用。我似乎找不到任何东西可以通过xaml实现这一点。我做错了什么

在我的xaml中

<CollectionViewSource x:Key="SortedItems"
                      Source="{Binding Items, ElementName=Selector}"
                      IsLiveSortingRequested="True">
        <CollectionViewSource.LiveSortingProperties>
            <System:String>IsSelected</System:String>
        </CollectionViewSource.LiveSortingProperties>
        <CollectionViewSource.SortDescriptions>
            <scm:SortDescription PropertyName="IsSelected"
                                 Direction="Descending" />
            <scm:SortDescription PropertyName="CodeDescriptionText" />
        </CollectionViewSource.SortDescriptions>
    </CollectionViewSource>

当选
和我的列表框

<ListBox x:Name="ItemsControl"
         SelectionMode="Multiple"
         ItemsSource="{Binding Source={StaticResource SortedItems}}"
         ItemTemplate="{Binding ItemTemplate, ElementName=Selector}"
         ItemContainerStyle="{StaticResource ListBoxItemStyle}"
         Grid.Row="1"
         Grid.ColumnSpan="3">


在您的
项目模板中,是否将
bool
属性绑定到
复选框。是否选中了
属性?如果是,那么您应该能够将该属性设置为
SortDescription.PropertyName
属性,就像您所做的那样。如果没有,那么这就是您需要做的。

我也有同样的问题,最终我发现问题出在数据源上,我怀疑您的问题与我的问题相同

虽然
CollectionViewSource
可以使用多种不同类型的数据源,但并非所有数据源都可以使用实时排序。为确保一切顺利进行,最好对数据源使用
INotifyPropertyChanged
项的
observedcollection

但是,如果您必须使用自定义集合类而不是
ObservableCollection
,那么请确保该类实现
IList
,而不仅仅是泛型
IList
。如果不这样做,则很可能会禁用实时排序。为了确保所有其他领域的工作顺利进行,我强烈建议您也为it部门实施
INotifyCollectionChanged
INotifyPropertyChanged


无论使用哪个集合类,其中包含的项都必须实现
INotifyPropertyChanged
。没有别的办法了。

这是哪里?“Source=“{Binding Items,ElementName=Selector}”Items是我的ViewModel中的一个集合如果您省略LiveSortingProperties集合(但仍将IsLiveSortingRequested设置为true),默认情况下它将使用SortDescriptions中的属性。是my Checkbox.IsChecked绑定到IsSelected属性。