WPF:简单的TextBox数据绑定

我有这个class级:

public partial class Window1 : Window { public String Name2; public Window1() { InitializeComponent(); Name2 = new String('a', 5); myGrid.DataContext = this; } // ... } 

我想在文本框中显示stringName2

 <Grid Name="myGrid" Height="437.274"> <TextBox Text="{Binding Path=Name2}"/> </Grid> 

但是string不显示。 另外,如果使用TimerCallback定期更新stringName2 ,那么在数据更改时是否需要执行任何操作以确保文本框已更新?

Name2是一个字段。 WPF只绑定到属性。 将其更改为:

 public string Name2 { get; set; } 

被警告说,通过这个最小的实现,你的TextBox将不会响应对Name2的编程修改。 所以对于你的计时器更新scheme,你需要实现INotifyPropertyChanged:

 partial class Window1 : Window, INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; // usual OnPropertyChanged implementation private string _name2; public string Name2 { get { return _name2; } set { if (value != _name2) { _name2 = value; OnPropertyChanged("Name2"); } } } } 

你应该考虑把它移到一个单独的数据对象而不是你的Window类。

您的窗口没有实现必要的数据绑定通知,网格需要将其用作数据源,即INotifyPropertyChanged接口。

你的“Name2”string也需要是一个属性而不是公共variables,因为数据绑定是用于属性。

在这里可以find将对象用作数据源的必要接口。

只是为了未来的需要。

在带有.NET Framework 4.5的Visual Studio 2013中,对于窗口属性,请尝试添加ElementName=window以使其工作。

 <Grid Name="myGrid" Height="437.274"> <TextBox Text="{Binding Path=Name2, ElementName=window}"/> </Grid>