私はいくつかのテキストボックスを持つ単純なフォームを持っています。私はViewModelをコードから設定されたDataContextとして使用しています。 ViewModelにはメタデータという名前のプロパティがあります。ユーザーが新しい「メタデータ」をフォームに読み込むと、このプロパティが変更されます。メタデータプロパティが、私は( "メタデータ")OnProperyChanged実行変更されたときのViewModelにWPFネストされたデータバインディングはランダムに動作します
<TextBox Text="{Binding Path=Metadata.ContractMetadata.Utstrackning.VastligasteLongitud, Mode=TwoWay}" />
:
テキストボックスのXAMLは、このようになります。メタデータはINotifyPropertyChangedインターフェイスを実装しますが、階層内の他のクラスは継承しません。時にはそれは動作し、それ以外は動作しません。私は走ってみました:
OnProperyChanged("Metadata")
OnProperyChanged("Metadata.ContractMetadata");
OnProperyChanged("Metadata.ContractMetadata.Utstrackning");
OnProperyChanged("Metadata.ContractMetadata.Utstrackning.VastligasteLongitud");
...運がありません。
非常に多くのOnPropertyChangedのコードはうまく機能しました!私はちょうど私がそれを試したと仮定した...とにかく、それを行うためのより良い方法があり、それは時々どのように働くか? –
私が知る限り、ChangeNotificationはバインドされたオブジェクトに対してのみ動作します。 Utstrackingは、Metadata.ContractMetadata.Utstrackning.OnPropertyChanged( "VastligasteLongitud")を呼び出すことができるように、INotifyPropertyChangedを実装する必要があります。 –
問題は、バインドされたオブジェクトがサービスから取得するオブジェクトであり、その実装を混乱させたくないということです。 GUIを使ったクラス。これは、フレームワークが処理された場合には素晴らしいだろう! –