绑定到自定义 MVVM 控件

本文关键字:控件 MVVM 自定义 绑定 | 更新日期: 2023-09-27 18:34:22

我有使用 MVVM 的自定义用户控件:INotifyPropertyChanged.我的应用程序还使用 MVVM 和 INotifyPropertyChanged,但是当我尝试将值绑定到自定义用户控件时,应用程序失败了。

"异常无法分配给属性'%0'。"

我需要使用双向绑定。谢谢你的帮助。

自定义用户控件

    private double _value = 0;
    public double Value
    {
        get
        {
            return _value;
        }
        set
        {
            _value = value;
            RaisePropertyChanged("Value");
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;
    private void RaisePropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

绑定到元素:

    private double _startMinutes;
    public double StartMinutes
    {
        get
        {
            return _startMinutes;
        }
        set
        {
            _startMinutes = value;
            RaisePropertyChanged("StartMinutes");
        }
    }
    <controls:RadialSlider
        Value="{Binding StartMinutes}"
    />

绑定到自定义 MVVM 控件

不能只绑定到普通属性。

绑定是通过DependencyProperty完成的。最快的方法是通过propdp片段。它们看起来像:

    public double Value
    {
        get { return (double)GetValue(ValueProperty); }
        set { SetValue(ValueProperty, value); }
    }
    // Using a DependencyProperty as the backing store for Value.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty ValueProperty =
        DependencyProperty.Register("Value", typeof(double), typeof(RadialSlider), new PropertyMetadata(0));

现在,绑定将按预期工作。请参阅 MSDN 了解更多信息