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);
我的 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);