大佬教程收集整理的这篇文章主要介绍了MVVM 方式通知邻居用户控件有关更改,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
全部!
在我的主窗口中,我有一个包含 2 列的网格。第 0 列是带有设置的用户控件,第 1 列是带有内容的用户控件。 目标是在更改设置时使用内容重置用户控件。什么是正确的“MVVM”方式?
两个用户控件均以 MVVM 方式实现,所有业务逻辑都在 viewmodel 中。
假设我有一个 checkBox 绑定到 setTings-usercontrol 中的一个属性:
...
<checkBox Ischecked="{Binding Path=MySetTingNr1}">
...
@H_696_16@
...
public bool MySetTingNr1
{
get
{
return _model.SttNr1;
}
set
{
if(_model.SttNr1 == value) return;
_model.SttNr1 = value;
OnPropertyChanged(nameof(MySetTingNr1));
}
}
...
@H_696_16@
如果用户单击此复选框,我如何通知我的内容用户控件?
路由事件可能不会执行,因为两个用户控件都是主窗口网格中的邻居。
我想到的唯一方法是使用设置在用户控件中触发事件,在主窗口中捕获它并使用内容调用用户控件的函数。有没有办法缩短这个调用链?
提前致谢。
您可以为两个用户控件绑定到的窗口使用单个共享视图模型,即它们都继承父窗口的 strncpy@H_696_16@。这样他们就可以直接通过共享视图模型进行通信。
如果您更喜欢有两个不同的视图模型,每个用户控件一个,您可以使用事件聚合器或信使以松散耦合的方式将事件/消息从一个视图模型发送到另一个视图模型。
大多数 MVVM 库都为此实现了解决方案。例如,Prism 使用 event aggregator,MvvmLight 使用 messenger。
有关该概念的更多信息,请参阅 this blog post。
以上是大佬教程为你收集整理的MVVM 方式通知邻居用户控件有关更改全部内容,希望文章能够帮你解决MVVM 方式通知邻居用户控件有关更改所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。