1

我的 MainWindow 中有一个静态列表。如果发生更改,则立即设置 CurrValue。

public static List<varVisu> varVisuListDll = new List<varVisu>();

在我的课堂上,有一个 INotifyPropertyChanged 实现

    public string m_CurrValue;

    public event PropertyChangedEventHandler PropertyChanged;
    protected void Notify(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    public string CurrValue
    {
        get { return m_CurrValue; }
        set 
        {
            if (value != m_CurrValue)
            {
                //set value
                m_CurrValue = value;
                //notify anyone who cares about it
                Notify("CurrValue");
            }
        }
    }

这很好用,但是现在,我想将 Window#2 中的文本框(文本)绑定到此列表中的第一项(varVisuListDll[0].CurrValue)。

如何将 TextBox.Text 绑定到该值 (Text={Path, UpdateSourceTrigger ...}??

<TextBox x:Name="txtManualMode" Text="{Binding ElementName=????, Path=CurrValue, UpdateSourceTrigger=PropertyChanged}" 

我已经用 (dtgrVariables.ItemSource=MainWindow.varVisuListDll) 进行了测试。这部作品。

请帮我 ..

4

2 回答 2

1

我已经解决了这个问题。

我在后面的代码中设置了绑定。那个工作很好。

        varVisu v1 = MainWindow.varVisuListDll[1];
        txtManualMode.DataContext = v1;
        Binding binding = new Binding() { Path = new PropertyPath("CurrValue") };
        txtManualMode.SetBinding(TextBox.TextProperty, binding);
于 2015-09-08T11:38:09.747 回答
0

varVisuListDll必须是属性,而不是字段:

private static List<varVisu> varVisuListDll = new List<varVisu>();

public static List<varVisu> VarVisuListDll
{
    get { return varVisuListDll; }
}

那么绑定应该是这样的:

<TextBox Text="{Binding Path=(local:MainWindow.VarVisuListDll)[0].CurrValue}"/>

或者,如果您使用的是比 .NET 4 更旧的框架:

<TextBox Text="{Binding Path=[0].CurrValue,
                        Source={x:Static local:MainWindow.VarVisuListDll}}"/>
于 2015-09-08T07:57:17.993 回答