wpf 将文本框绑定到列表 - MainWindow.List.Item[0]

wpf bind textbox to List - MainWindow.List.Item[0]

我的 MainWindow 中有一个静态列表。如果发生变化,CurrValue 会立即设置。

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

在我的class中,有一个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) 进行了测试。这个作品的。

请帮帮我..

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

我已经解决了问题。

我在后面的代码中设置了绑定。那个作品不错。

        varVisu v1 = MainWindow.varVisuListDll[1];
        txtManualMode.DataContext = v1;
        Binding binding = new Binding() { Path = new PropertyPath("CurrValue") };
        txtManualMode.SetBinding(TextBox.TextProperty, binding);