同じ利用可能な選択肢をすべて共有するコンボがたくさんあります。これらの選択肢は、ViewModel から公開されたコレクションで提供されます。すべて元気でダンディ。
これらの選択肢を並べ替えたいのでICollectionView
、通常の の代わりに ViewModel からを公開し、ViewModelReadonlyObservableCollection<T>
でコレクション ビューを並べ替えることにしました。
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 のセッターが正しく更新されるようです。
CollectionView がどのように機能するかについて、明らかに根本的なことが欠けています。誰でも私を啓発できますか?
EDIT:私の悪い、これはで動作しIsSynchronizedWithCurrentItem="False"
ます。詳細については、私の回答を参照してください。
乾杯。