私は、すべて同じ選択肢を共有するコンボがたくさんあります。これらの選択肢は、私のViewModelから公開されるコレクションに含まれています。すべての罰金とダンディー。CollectionViewSource(SelectedItemはコンボでは機能しません)について混乱しています
これらの選択肢を並べ替えたいので、通常のReadonlyObservableCollection<T>
の代わりにを私のViewModelから公開することにしました。私のViewModelでコレクションビューをソートします。
class EditStuffViewModel : ViewModelBase
{
public EditStuffViewModel (ObservableCollection<Choice> choices)
{
Choices = new CollectionViewSource() { Source = choices }.View;
Choices.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
}
public ICollectionView Choices
{
get;
private set;
}
//snip other properties
}
このすべては今すべての私のコンボは今、自分の選択を同期する以外は正常に動作します。
これは私が望むものではありません。私は選択肢を共有したいが、選択は通常のバインディングにする。私は私のCollectionViewが選択を追跡していることを理解していると思うが、私はこれがそれぞれのコントロールのためにオプトインしていると思った。
私は明示的に成功し、それらを切り離した私のコンボにIsSynchronizedWithCurrentItem="False"
を設定しようとしたが、その後、私のバウンドSelectedItem
は(のViewModelのバウンドゲッターが呼ばれたが、結果が選択されることはありません)コンボで選択されることはありません。アイテムを選択すると、ViewModelのセッターが正しく更新されているようです。
私は明らかに、CollectionViewがどのように動作するのかについて基本的な何かを欠いています。誰も私を啓発することはできますか?
EDIT:私の悪い、このはIsSynchronizedWithCurrentItem="False"
と作業を行います。詳細は私の答えを見てください。
乾杯。
IsSynchronizedWithCurrentItem = "False"のソリューションでは、INotifyPropertyChangedを使用しましたか? OnPropertyChanged( "SelectedItem") – Dummy01