簡體   English   中英

雙向綁定到用戶控件中的依賴項屬性並調用方法

[英]Two Way binding to a Dependency Property in a User Control and call a method

我知道標題有點混亂,所以讓我解釋一下。 我有一個具有依賴項屬性的用戶控件。 我使用名為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的值。 我如何才能將其更新回用戶控件中的dependency屬性? 如果我離開代碼input = value; 出來,然后我得到一個編譯錯誤。

我需要這樣的東西:

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

如果使視圖模型中的Input屬性如下所示:

public string Input
        {
            get; set;
        }

然后它可以工作,但是,當屬性更改時,我無法調用需要調用的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));
        }
    }

}

就您而言,您可以在用戶控件后面的代碼中完成此操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM