gpt4 book ai didi

c# - 数据刷新后如何保持当前排序的 ICollection?

转载 作者:太空宇宙 更新时间:2023-11-03 16:11:29 25 4
gpt4 key购买 nike

我的应用程序客户端/服务器有问题。我使用 MVVM 模式。在我看来,我有一个 DataGrid,它在我的 ViewModel 中与一个 ICollection 绑定(bind),代码行如下:

public ICollectionView Customers
{
get
{
return _customers;
}
set
{
_customers= value;
RaisePropertyChanged("Customers");
}
}

_customers = CollectionViewSource.GetDefaultView(Manager.Instance.Customers());
_customers .SortDescriptions.Add(new SortDescription("CreationDate", ListSortDirection.Descending));

一开始,这两行工作正常:我的 DataGrid 有我的客户列表,排序没问题。

但是当服务器更新我的客户列表时,我想更新我的集合,因此,我的 DataGrid。因此,我收到了关于我的新客户名单的通知。当我收到这个通知时,我用这些行更新了我的收藏:

 Customers = CollectionViewSource.GetDefaultView(e.CustomersInfo);
_customers.SortDescriptions.Clear();
_customers .SortDescriptions.Add(new SortDescription("CreationDate", ListSortDirection.Descending));
Customers.Refresh();

在这里,我的 DataGrid 很好地刷新了良好的数据,但是排序没有刷新,因为开始时,我的客户列表是按 CreationDate 排序的,但刷新后,我的列表按 CustomersName 排序。

在这里,我的 XAML 代码:

<DataGrid AutoGenerateColumns="false" ItemsSource="{Binding Customers, Mode=TwoWay}" IsSynchronizedWithCurrentItem="True" Name="dtgEventInfo" SelectedItem="{Binding SelectedCustomers, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ItemContainerStyle="{StaticResource ItemContStyle}" IsEnabled="True" IsReadOnly="True" Margin="0,0,330,0" GridLinesVisibility="None" SelectionMode="Single">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name, Mode=TwoWay}" Header="Name" MinWidth="40" Width="Auto"/>
<DataGridTextColumn Binding="{Binding CreationDate, Mode=TwoWay}" Header="Date" MinWidth="50" Width="Auto"/>
</DataGrid.Columns>
</DataGrid>

你有什么想法可以帮助我吗?经过一些研究,我发现了任何解决方案...

最佳答案

我认为您应该将 RaisePropertyChanged("Events"); 替换为 RaisePropertyChanged("Customers");

关于c# - 数据刷新后如何保持当前排序的 ICollection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17272728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com