我可以通过绑定到wpf中父控件上的属性的依赖属性在xaml中设置我的用户控件数据上下文吗?
本文关键字:控件 属性 用户 我的 设置 数据 上下文 xaml 绑定 可以通过 依赖 | 更新日期: 2023-09-27 18:17:01
我有一个带有依赖属性ViewModel的用户控件。我希望这个属性设置的值是这个控件的数据上下文。
下面是一个使用它的例子;
<uc:MyCustomControl ViewModel="{Binding CustomControlViewModel}"/>
下面是"MyCustomControl"的ViewModel依赖属性的隐藏代码
public static readonly DependencyProperty ViewModelProperty = DependencyProperty.Register(
"ViewModel", typeof(CustomControlViewModel), typeof(MyCustomControl), new PropertyMetadata(default(CustomControlViewModel), PropertyChangedCallback));
public CustomControlViewModel ViewModel
{
get { return (CustomControlViewModel)GetValue(ViewModelProperty); }
set
{
SetValue(ViewModelProperty, value);
}
}
private static void PropertyChangedCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
var control = (MyCustomControl) dependencyObject;
if (control == null)
{
return;
}
control.DataContext = (CustomControlViewModel) dependencyPropertyChangedEventArgs.NewValue;
}
这是"MyCustomControl"的构造函数;
public MyCustomControl()
{
InitializeComponent();
}
这似乎不起作用,我可能做错了什么?
DataContext
本身是DependencyProperty
。你可以像这样用你的视图模型直接分配它。
<uc:MyCustomControl DataContext="{Binding CustomControlViewModel}"/>