使用 MVVM 模式和 WPF,我想将我的控件绑定(bind)到两个属性。假设我有一个绑定(bind)到 VM1 上的属性的标签,我想将它也绑定(bind)到 VM2 上的属性以将接收到的值从 VM1 发送到 VM2。
我可以使用 messenger 和多个项目元组类,但我想知道是否有另一种解决方案。多重绑定(bind)?但是我需要 ValueConverter。
感谢您的任何建议。
最佳答案
由于 View-Model 是公开公共(public)属性和命令的 View 的抽象,因此按照您解释的方式让一个 View 具有两个 View 模型没有多大意义.如果有一个 VM
类作为您的 View 的 View 模型,它会更合理,它具有类型为 VM1
和 VM2
的两个属性.然后绑定(bind)将在 VM.VM1.YourText
上,您可以通过这样的事件通知 VM2
:
在 VM1 中:
public event EventHandler<EventArgs> ValueChanged;
string _yourText;
public string YourText
{
get
{
return _yourText;
}
set
{
_yourText= value;
if (ValueChanged != null)
ValueChanged(_yourText, new EventArgs());
}
}
在虚拟机中:
public VM1 Vm1 {get; set;}
public VM2 Vm2 {get; set;}
public VM()
{
InitializeComponent();
Vm1 = new VM1();
Vm2 = new VM2();
Vm1.ValueChanged += Item_ValueChanged;
DataContext = this;
}
void Item_ValueChanged(object sender, EventArgs e)
{
VM2.YourAnotherText = sender.ToString();
}
关于wpf - 将控件绑定(bind)到两个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30864476/