【发布时间】:2017-02-04 15:55:29
【问题描述】:
我有一个 UserControl MyView,它有一个内部 UserControl SubView。
2个用户控件的视图模型与视图具有相同的层次结构, 即,MyViewModel 内部有 SubViewModel,如下面的代码所示。
public class MyViewModel
{
private readonly SubViewModel _subViewModel = new SubViewModel();
public SubViewModel SubViewModel { get { return _subViewModel; } }
private void HandleSubViewModel()
{
// Do what is necessary to handle SubViewModel
}
}
我的问题是关于如何将 SubViewModel 绑定到 SubView。
现在我在 SubView 的代码隐藏中定义 SubViewModel 并将其绑定到 MyViewModel 类的 SubViewModel 属性。
public partial class SubView : UserControl
{
public static readonly DependencyProperty SubViewModelProperty = DependencyProperty.Register(
"SubViewModel", typeof (SubViewModel), typeof (SubView), new PropertyMetadata(default(SubViewModel)));
public SubViewModel SubViewModel
{
get { return (SubViewModel) GetValue(SubViewModelProperty); }
set { SetValue(SubViewModelProperty, value); }
}
}
<UserControl x:Class="MyProject.View.MyView"
xmlns:parts="clr-namespace:MyProject.View.Parts">
<Grid DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}, Path=MyViewModel}">
<parts:SubView SubViewModel="{Binding SubViewModel}"/>
</Grid>
</UserControl>
以这种方式绑定内部视图模型是一种不好的做法吗?
如果是这样,我怎样才能更好地绑定它?
【问题讨论】:
标签: c# wpf mvvm data-binding viewmodel