使用MVVM使用UserControl和DepenencyProperties创建自定义控件

问题描述 投票:0回答:1

我已经创建了一个MVVM UserControl来完成我想要的东西,但是我想添加一个DependencyProperty,它会给我一些更大的灵活性。 (如果DependencyProperty是最佳路线。)

基本上,我想添加这个功能......

<!-- Before -->
<local:MyCustomControl />

<!-- After -->
<local:MyCustomControl IsMasterControl="True" />

我在MyCustomControlViewModel中添加了以下DependencyProperty:

public bool IsMasterControl
{
    get { return (bool)GetValue(IsMasterControlProperty); }
    set { SetValue(IsMasterControlProperty, value); }
}
public static readonly DependencyProperty IsMasterControlProperty = DependencyProperty.Register("IsMasterControl", typeof(bool), typeof(MyCustomControl), new PropertyMetadata(false));

但是,当我尝试在XAML中将该属性添加到我的控件时,我没有选择添加IsMasterControl。

我能错过什么?

谢谢!

wpf mvvm
1个回答
0
投票

我不确定在ViewModel中定义DP是否有意义,DP被认为是演示文稿的一部分。通常,您可以在View中专门在代码隐藏中定义它们。甚至在VM之前,视图和DP可能存在。 (也可能对DP层次结构很重要)。

现在,如果你真的想要它在VM中(比如常规的C#属性),你仍然需要在视图的代码隐藏中公开DP。你需要保持同步。当说DP更改处理更改事件并通知VM时,反之亦然。

© www.soinside.com 2019 - 2024. All rights reserved.