【发布时间】:2019-02-17 22:31:30
【问题描述】:
我有一个 ViewModel 和一个类。它们看起来像这样:
//viewmodel
public class MyViewModel : ViewModelBase {
private MyClass myClass;
public MyClass MyClass{
get{
return myClass;
}
set{
this.myClass = value;
base.OnPropertyChanged();
}
}
private string testString;
public string TestString{
get{
return testString;
}
set{
this.testString = value;
base.OnPropertyChanged();
}
}
public MyViewModel(){
this.MyClass = new MyClass();
this.TestString = "blah, blah, blah"
}}
//class
public class MyClass : ViewModelBase{
private string myString;
public string MyString{
get {
return myString
}
set{
this.myString = value;
base.OnPropertyChanged();
}
}
public MyClass (){
this.MyString = "25"; }}
基类 - ViewModelBase 实现 INotifyChange 并包含 OnPropertyChanged 处理程序逻辑。 我有一个 UserControl,我希望像这样绑定 MyClass 中的值:
<TextBlock Text="{x:Bind Path=MyViewModel.MyClass.MyString, Mode=TwoWay}"></TextBlock>
但是这不起作用。值在初始化中正确绑定,但 MyViewModel.MyClass.MyString 中的任何更改都不会反映在 texblock 中,文本保持不变。引发了 OnPropertyChange,ViewModelBase 中的断点被 MyString 值更改,但它以某种方式没有传播到 texblock。 绑定 MyClass 中的简单值就像魅力一样,当属性更改时,此文本块会更新:
<TextBlock Text="{x:Bind Path=MyViewModel.TestString, Mode=TwoWay}"></TextBlock>
我错过了什么?为什么绑定到“MyViewModel.MyClass.MyString”的文本块没有更新?
【问题讨论】:
标签: xaml binding uwp inotifypropertychanged