0

当我用新实例替换成员时,我无法让我的 ViewModel 更新我的视图。

我的 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();之后的构造函数中?(如果不是,你应该是)

第三,您是否测试过 Name 在创建“Test”类时实际上填充了一个值?它还应该实现 INotifyPropertyChanged 接口。

于 2013-04-16T12:21:04.427 回答