Ich habe eine Reihe von Combos, die alle die gleiche Auswahl haben. Diese Auswahlmöglichkeiten werden in einer Sammlung bereitgestellt, die in meinem ViewModel verfügbar gemacht wird. Alles in Ordnung und Dandy.Verwirrt über CollectionViewSource (SelectedItem funktioniert nicht in Combos)
Ich möchte jetzt diese Auswahl sortiert, so entschied ich mich, eine ICollectionView
von meinem ViewModel statt meiner üblichen ReadonlyObservableCollection<T>
auszusetzen, und sortieren Sie die Sammlungsansicht in meinem ViewModel. Diese
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
}
alles funktioniert gut, außer dass jetzt alle meine Combos synchronisieren nun ihre Auswahl.
Das ist nicht was ich will. Ich möchte, dass die Auswahlmöglichkeiten geteilt werden, die Auswahl aber auf ihre normalen Bindungen beschränkt ist. Ich denke, ich verstehe, dass mein CollectionView die Auswahl nachverfolgt, aber ich dachte, dass dies das Verhalten war, das für jedes Steuerelement aktiviert wurde.
ich versucht habe ausdrücklich IsSynchronizedWithCurrentItem="False"
auf meine Combos Einstellung, die sie erfolgreich abkoppelt, aber dann meine gebundenen SelectedItem
wird nie in der Combo ausgewählt (die Ansichtsmodell des gebundenen Getter genannt, aber das Ergebnis nie ausgewählt wird). Das Auswählen eines Elements scheint den Setter meines ViewModels korrekt zu aktualisieren.
Ich vermisse offensichtlich etwas grundlegend, wie CollectionView funktionieren soll. Kann mich jemand aufklären?
EDIT: Mein schlecht, die DOES Arbeit mit IsSynchronizedWithCurrentItem="False"
. Siehe meine Antwort für Details.
Prost.
In der Lösung mit IsSynchronizedWithCurrentItem = "False" haben Sie INotifyPropertyChanged verwendet? OnPropertyChanged ("SelectedItem") – Dummy01