如何解决将绑定属性传递给ViewModel
| 我仍在努力解决使用WPF和MVVM的一些问题。让我烦恼了一段时间的一件事是如何将View中的值获取到ViewModel中。让我解释一下情况。 我有一个带有多个UserControl的窗口。这些用户控件之一具有类型为TimeSpan
的DependencyProperty
,名称为CurrentTime
。它绑定(在窗口的XAML中)到Window的ViewModel。
现在,我还有一个用于UserControl的ViewModel。它需要访问CurrentTime属性,以便基于该属性创建对象。如何将这个值输入到ViewModel中?我看到几个选择:
最简单的方法可能只是将View传递到ViewModel的构造函数中(或以其他方式从ViewModel引用View)。但这似乎是错误的,而不是WPF / MVVMy。
我可以使用消息传递从另一个ViewModel实际获取CurrentTime。这当然可以工作,但似乎有点过头了。
我可以在UserControl的XAML中设置一个绑定,以在DP和ViewModel中的属性之间绑定OneWayToSource。我无法弄清楚如何进行设置(如何在其自己的XAML中引用UserControl的新属性?),但似乎可以使用。
我还有其他选择吗?以上哪一项(或我错过的哪一项)是执行此操作的最佳方法?
我在SO上通读了该线程,因为它很相似,但是答案并没有真正回答我的问题-我很想用绑定或命令之类的东西来做,但是我无法弄清楚到底有多精确。
解决方法
第三种选择是前往此处的方式,但是您必须在
UserControl
的代码背后指定绑定:
public partial class MyUserControl : UserControl
{
public MyUserControl() {
InitializeComponent();
SetBinding(MyPropertyProperty,new Binding {Path = new PropertyPath(\"MyViewModelProperty\"),Mode = BindingMode.OneWayToSource});
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。