「知っている」MVVMコレクションがVMで並べ替えられていますが、ビューに新しい順序で表示されていません。以下のようなコードが与えられた場合、CollectionViewSourceを操作せずに、リストが新しい並べ替えで再表示されることを期待する必要がありますか?
xaml
<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>
vm
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を表示するものではありません)。また、IEnumerableに直接バインドするために、ObsCollectionを破棄して、まったく同じ結果を得ようとしました。
誰かが修正を示唆するパターンを見ますか?