c# - 两种方式绑定(bind)到用户控件中的依赖属性并调用方法

标签 c# wpf xaml mvvm binding

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

<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"/>

好的,在我的 View 模型中,每当 Input 的值发生更改时,我都会调用一个方法,如我的属性中所示:
public string Input
        {
            get
            {
                return input;
            }
            set
            {
                input = value;
                InputChanged();
            }
        }

这样做的问题是,当我在 View 模型中设置 Input 的值时,它只会根据我的属性中的 setter 更新变量 input 的值。我怎样才能让它更新回用户控件中的依赖属性?如果我留下代码 input = value;然后我得到一个编译错误。

我需要这样的东西:
public string Input
            {
                get
                {
                    return UserControl.Input;
                }
                set
                {
                    UserControl.Input = value;
                    InputChanged();
                }
            }

如果我使 View 模型中的 Input 属性如下所示:
public string Input
        {
            get; set;
        }

然后它可以工作,但是,当属性更改时,我无法调用我需要调用的 InputChanged() 方法。所有建议表示赞赏。

最佳答案

实现INotifyPropertyChanged在您的 ViewModel

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));
        }
    }

}

在您的情况下,您可以在用户控件背后的代码中执行此操作

关于c# - 两种方式绑定(bind)到用户控件中的依赖属性并调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34424829/

相关文章:

c# - 无法创建 VSTO Excel 工作簿项目

c# - 在某些机器上 FileUpload.click() 之后不执行 PostBack

javascript - 以编程方式以全屏模式打开 Youtube 的视频页面

c# - 如何从 WPF 窗口 XAML 中隐藏属性?

c# - 数据绑定(bind)基本上是巫术

c# - 如何覆盖默认的必需错误消息

c# - ASP.NET MVC : Populating Derived Strongly Typed View with Base Strongly Typed View

c# - 什么在我的应用程序中创建新线程?

wpf - TargetType 与元素类型不匹配

c# - 在MVVM-WPF中更新DataContext的计时器