0

メンバーを新しいインスタンスに置き換えたときに、ViewModel に View を更新させることはできません。

私のViewModelには、TestメンバーがOnPropertyChangedによって変更されたという適切な(私が信じている)通知が含まれています(他のメンバーへのバインディングで動作することが確認されています):

public class ServerViewModel
{
   private TestViewModel _Test;
   public TestViewModel Test 
   {
      get {return _Test;}
      set {_Test = value;OnPropertyChange("Test");}
   }
   ...
   ...
}

コード ビハインドでは、MainWindow() コンストラクターで ServerViewModel をインスタンス化し、データ コンテキストを設定します。

VServer = new ServerViewModel();
this.DataContext = VServer;

私のビューモデルには、新しいインスタンスを割り当ててテストをロードする関数があります:

VServer.Test = new Test("c:\test\test3.test");

XAML は、次の方法で Test のメンバーにバインドしようとします。

<TextBox x:Name="TextTestName" 
...
Text="{Binding Test.Name, Mode=TwoWay}"/>

しかし、テストをロードすると、コントロール バインディングは新しいオブジェクトが作成されたことを認識せず、コンテンツを更新しません。何か案は?

4

1 に答える 1

1

あなたが投稿したコードは疑似コードのように見えるため、判断するのは困難です。

まず、ServerViewModel クラスに INotifyPropertyChanged を確実に実装していますか?

次に、ビューモデルのインスタンス化コードをthis.InitializeComponent(); の後にコンストラクターに配置していますか? (そうでない場合は、そうする必要があります)

第三に、'Test' クラスの作成時に Name に実際に値が入力されることをテストしましたか? INotifyPropertyChanged インターフェイスも実装する必要があります。

于 2013-04-16T12:21:04.427 に答える