Ich habe eine ComboBox, in der ein Benutzer auswählen kann, an welchem JobType er arbeitet. Die ComboBox hat eine Liste von AllJobTypes. Das Problem rührt daher, wenn ein Benutzer einen neuen JobType hinzufügt, ich den JobType der AllJobTypes ObservableCollection hinzufüge und sie dann sortiere. Wenn die Sortierung erfolgt, wird die ComboBox deaktiviert und nicht wirklich sicher warum. Der JobConfig.SelectedJobType.Name ändert sich in diesem Prozess nie. Gibt es eine Möglichkeit, eine beobachtbare Sammlung so zu sortieren, dass sie die ComboBox nicht unterbricht?WPF Beim Sortieren einer ObservableCollection wird eine ComboBox abgewählt
public class JobTypeList : ObservableCollection<JobType> {
public void SortJobTypes() {
var sortableList = new List<JobType>(this);
sortableList.Sort((x, y) => x.Name.CompareTo(y.Name));
//this works but it creates a bug in the select for JobTypes
for (int i = 0; i < sortableList.Count; i++) {
this.Move(this.IndexOf(sortableList[i]), i);
}
}
Und in der XAML
<ComboBox Grid.Column="0" SelectionChanged="JobTypeComboBox_SelectionChanged"
Name="JobTypeComboBox"
ItemsSource="{Binding Path=AllJobTypes}"
DisplayMemberPath="Name"
SelectedValuePath="Name"
SelectedValue="{Binding
Path=JobConfig.SelectedJobType.Name}" />
Versuchen Sie, Ihre Bindung an ein Itemssource/SelectedItem Paar statt SelectedValue ändern. SelectedValue-Bindungen sind aus verschiedenen Gründen ziemlich schlecht, und das könnte ein neuer sein. – Will
Dies verursacht das gleiche Problem. –
Keine Repro. Du machst etwas anderes falsch. – Will