我可以通过绑定到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();
    }

这似乎不起作用,我可能做错了什么?

我可以通过绑定到wpf中父控件上的属性的依赖属性在xaml中设置我的用户控件数据上下文吗?

DataContext本身是DependencyProperty。你可以像这样用你的视图模型直接分配它。

<uc:MyCustomControl DataContext="{Binding CustomControlViewModel}"/>