ich nächstes Modell haben:ListBox binden an ObservableCollection ist nicht mit der Sammlung aktualisiert
public class MyModel
{
public ObservableCollection<MyObject> MyList {get; set;}
}
public class MyObject
{
MyObservableDictionary MyDictionary {get; set;}
}
public class MyObservableDictionary : ObservableCollection<EnymValue>
{
}
public class EnymValue : INotifyPropertyChanged
{
private MyEnum key;
private string value;
public MyEnum Key
{
get
{
return this.key;
}
set
{
this.key = value;
NotifyPropertyChanged("Key");
}
}
public string Value
{
get
{
return this.value;
}
set
{
this.value = value;
NotifyPropertyChanged("Value");
}
}
public LanguageValue(MyEnum key, string value)
{
this.Key = key;
this.Value = value;
}
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged([System.Runtime.CompilerServices.CallerMemberName]string propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
public enum MyEnum
{
}
Und Ansicht habe ich eine List-Box:
<ListBox x:Name="MyList" SelectionMode="Single" ItemsSource="{Binding Path=MyList, Mode=OneWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=MyDictionary, Mode=OneWay, Converter={StaticResource myEnumToTextConverter}}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
(myEnumToTextConverter Wandler wählt nur das erste Element aus der Sammlung und Geben Sie den Wert oder eine bestimmte Konstante zurück, wenn die Sammlung null oder leer ist.
Ich möchte, dass die Listbox meines Modells aktualisiert wird n jeder EnymValue
Werte werden geändert. Ist es irgendwie möglich, dies zu implementieren?
Derzeit wird die Ansicht nicht aktualisiert, wenn Value
geändert wird. Ich habe versucht, EnymValue
von INotifyPropertyChanged
zu erben, aber das hat nicht geholfen. Sieht wie PropertyChanged == null
auf EnymValue.NotifyPropertyChanged
aus, wenn Eigenschaft aktualisiert wird.
Nicht so, wie Sie es tun. Diese "Bindung" wird nicht "INotifyCollectionChanged" abonnieren, da Sie die Auflistung an eine "String" -Eigenschaft binden. Wenn Sie also die Sammlung ändern, wird niemand davon erfahren und die Bindung wird das Ziel nicht aktualisieren. –