双向绑定到用户控件中的依赖项属性并调用方法

本文关键字:依赖 属性 方法 调用 绑定 用户 控件 | 更新日期: 2023-09-27 18:27:44

我知道,标题有点令人困惑,所以让我解释一下。我有一个具有依赖属性的用户控件。我使用一个名为Input的常规属性访问此依赖项属性。在我的视图模型中,我还有一个名为Input的属性。我在XAML中使用双向绑定将这两个属性绑定在一起,如下所示:

<uc:rdtDisplay x:Name="rdtDisplay" Input="{Binding Input, Mode=TwoWay}" Line1="{Binding myRdt.Line1}" Line2="{Binding myRdt.Line2}" Height="175" Width="99"  Canvas.Left="627" Canvas.Top="10"/>

好吧,在我的视图模型中,每当Input的值发生变化时,我都会调用一个方法,如我的属性所示:

public string Input
        {
            get
            {
                return input;
            }
            set
            {
                input = value;
                InputChanged();
            }
        }

问题是,当我在视图模型中设置Input的值时,它只会根据我的属性中的setter更新变量Input的值。如何将其更新回用户控件中的依赖项属性?如果我忽略了代码input = value;,那么我会得到一个编译错误。

我需要这样的东西:

public string Input
            {
                get
                {
                    return UserControl.Input;
                }
                set
                {
                    UserControl.Input = value;
                    InputChanged();
                }
            }

如果我让视图模型中的Input属性看起来像这样:

public string Input
        {
            get; set;
        }

然后它就工作了,但是,我无法调用在Property更改时需要调用的InputChanged()方法。感谢所有的建议。

双向绑定到用户控件中的依赖项属性并调用方法

ViewModel 中实现INotifyPropertyChanged

public class Sample : INotifyPropertyChanged
{
    private string input = string.Empty;
    public string Input
    {
        get
        {
            return input;
        }
        set
        {
            input = value;
            NotifyPropertyChanged("Input");
            InputChanged();
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(String info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }
}

在您的情况下,您可以在用户控制

的代码后面执行此操作