我正在使用 wpf。我想用一个在 xaml.cs 类中初始化的简单字符串类型值绑定(bind)一个文本框。 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();
}
}
最佳答案
你永远不会设定你的属性(property)的值(value)。简单定义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 反射(reflect)它,则需要实现
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));
}
}
}
关于c# - 如何将简单的字符串值绑定(bind)到文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17764323/