gpt4 book ai didi

c# - 对绑定(bind)的可观察集合进行排序

转载 作者:行者123 更新时间:2023-12-03 11:00:14 26 4
gpt4 key购买 nike

我有一个 MVVM 集合,我“知道”它在 VM 中重新排序,但未在 View 中以新顺序显示。给定类似于下面的代码,我是否应该期望列表在不操作 CollectionViewSource 的情况下以新的排序重新显示?

xml

<Menu Name="_mainMenu" Height="22" >
<MenuItem Header="Language"
ItemsSource="{Binding AvailableCultures}" >
<MenuItem.ItemTemplate>
<DataTemplate>
<MenuItem IsCheckable="True"
IsChecked="{Binding IsSelected, Mode=TwoWay}"
Header="{Binding DisplayName}"/>
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
</Menu>

虚拟机
public ObservableCollection<OptionLocalizedViewModel<CultureInfo>> 
AvailableCultures { get; private set; }

private void OnSelectionChange(OptionLocalizedViewModel<CultureInfo> option)
{
...
var sorted = AvailableCultures.OrderBy(x => x.DisplayName);
AvailableCultures =
new ObservableCollection<OptionLocalizedViewModel<CultureInfo>>(sorted);

NotifyOfPropertyChange(() => AvailableCultures);
}

更新

顺序正在更改,但与预期不同(而不是调试器显示新排序的 ObsCollection 的内容)。我还尝试放弃 ObsCollection 以支持直接绑定(bind)到 IEnumerable 并获得完全相同的结果。

有没有人看到建议修复的模式?

1)初始负载,看起来应该

enter image description here

2)选择西类牙语,所以应该首先是西类牙语,但不是

enter image description here

3)回到英语,但不知何故英语是最后的。这是怎么翻的?

enter image description here

4) 回到西类牙语,和 try (2) 一样

enter image description here

最佳答案

尝试使用 ListCollectionView反而 :

 ListCollectionView LCV = new ListCollectionView(YourObservableCollection);
LCV.GroupDescriptions.Add(new PropertyGroupDescription("PropertyName"));
YourDataBoundProperty = LCV;

您可以引用 this article了解更多详情。

关于c# - 对绑定(bind)的可观察集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11998473/

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