で更新されていません。のListBoxのバインドは、私は次のモデルを持っているコレクション
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
{
}
とビュー上で、私はリストボックスを持っている:
<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コンバータがちょうどコレクションから最初の要素を選択して、値が返されるか、またはコレクションがnullまたは空の場合に指定された定数が返されます)
私のモデルのリストボックスを表示するには、whe n EnymValue
の値が変更されます。 これを何とか実装できますか?
現在、Value
が変更された場合、ビューは更新されません。 EnymValue
をINotifyPropertyChanged
から継承しようとしましたが、これは役に立ちませんでした。プロパティが更新されたときに(EnymValue.NotifyPropertyChanged
)のように見えます。
あなたのやり方ではありません。コレクションを 'String'プロパティに束縛しているので、' Binding'は 'INotifyCollectionChanged'を購読しません。コレクションを変更すると、誰もそれについて聞くことはなく、バインディングはターゲットを更新しません。 –