【发布时间】:2011-10-22 11:06:14
【问题描述】:
我是 MVVM 新手,遇到了一些小问题。我有两个用户控件:父控件和子控件(带有视图、视图模型、模型类)。并且需要将一些属性从父母传递给孩子。现在我通过编写这样的代码来管理它:
public static readonly DependencyProperty CallbackActionProperty =
DependencyProperty.Register("CallbackAction", typeof (Action),
typeof (ChildView), new PropertyMetadata(default(Action)));
public Action CallbackAction
{
get { return (Action) GetValue(CallbackActionProperty); }
set
{
SetValue(CallbackActionProperty, value);
((ChildViewModel)this.DataContext).CallbackAction = value; // Change ViewModel property too
}
}
这是ChildView 中的依赖属性,在它的集合上我还设置了它的ViewModel 的属性。之后,我从 ParentView 访问该依赖项属性并设置 CallbackAction-> 在 Child 的 ViewModel 中设置 CallbackAction。
代码:
this.Loaded += (sender, args) => childUc.CallbackAction = ((ParentViewModel) this.DataContext).RefreshStatuses;
childUc 是用户控件,位于父级上,由ChildView 表示。
代码很丑,所以我希望在不破坏模式方面看到更好的实践。
谢谢。
【问题讨论】:
-
@Mario Vernari,我试图描述的事情的正确方法是什么。
标签: .net wpf mvvm design-patterns