我正在使用wpf。我想将文本框与在xaml.cs类中初始化的简单字符串类型值绑定。在TextBox
不显示任何。这是我的XAML代码:
<TextBox Grid.Column="1" Width="387" HorizontalAlignment="Left" Grid.ColumnSpan="2" Text="{Binding Path=Name2}"/>
C#代码是这样的:
public partial class EntitiesView : UserControl
{
private string _name2;
public string Name2
{
get { return _name2; }
set { _name2 = "abcdef"; }
}
public EntitiesView()
{
InitializeComponent();
}
}
您永远不会设置财产的价值。简单定义set { _name2 = "abcdef"; }
并不会真正设置属性的值,直到您实际执行设置操作为止。
您可以更改代码使其看起来像这样才能正常工作:
public partial class EntitiesView : UserControl
{
private string _name2;
public string Name2
{
get { return _name2; }
set { _name2 = value; }
}
public EntitiesView()
{
Name2 = "abcdef";
DataContext = this;
InitializeComponent();
}
}
而且,正如人们提到的那样,如果您打算稍后修改属性的值并希望UI反映出来,则需要实现该INotifyPropertyChanged
接口:
public partial class EntitiesView : UserControl, INotifyPropertyChanged
{
private string _name2;
public string Name2
{
get { return _name2; }
set
{
_name2 = value;
RaisePropertyChanged("Name2");
}
}
public EntitiesView()
{
Name2 = "abcdef";
DataContext = this;
InitializeComponent();
}
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句