考虑一个相当经典/简单的 MVVM 构造,其中的项目分别使用 Xaml 绑定到 ViewModel 来显示每个项目。 这些项目是可选择的,并且 ViewModel 有一个IsSelected属性,该PropertyChanged为与设计相关的属性(例如BorderBrush引发PropertyCha ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我一直在尝试用它自己的虚拟机更新用户控件内的属性。
<Label Content="{Binding Path =LabelText,UpdateSourceTrigger=PropertyChanged }" Grid.Column="0"/>
当我在 VM 的构造函数中设置它的文本时,Label 本身可以工作,并且如果我在 VM 中使用命令也会更新。
但是从外部改变它不会做任何事情:
private LabelTextBoxVM _testThing;
public LabelTextBoxVM TestThing
{
get => _testThing;
set
{
_testThing = value;
NotifyPropertyChanged("TestThing");
}
}
private void Update()
{
TestThing.LabelText = "Eureka";
TestThing.TextBoxText = "Wooosh";
NotifyPropertyChanged("TestThing");
}
从我读过的所有内容来看,为 TestThing 调用 NotifyPropertyChanged 应该会更新 Label 和 Textbox 的内容,但没有任何反应。
@克莱门斯
我在另一个问题中找到了您实际上提供的答案:
我必须在父视图中设置我的 DataContext,绑定到父视图中的属性,并删除 childVM 中的 Datacontext
所以:
<myViewes:UserControlName DataContext="{Binding VMProperty}/>"
这部分不能在我的用户控件中:
<UserControl.DataContext>
<viewModels:UserControlVM/>
</UserControl.DataContext>
我猜这就是“继承”虚拟机的意思
谢谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.