C# 将标签绑定到属性
我想将标签绑定到类的属性,并尝试了以下操作:C# 将标签绑定到属性,c#,data-binding,C#,Data Binding,我想将标签绑定到类的属性,并尝试了以下操作: public class Test { public string Name { get; set; } } Test test = new Test () { Name = "abc" }; label.DataBindings.Add ("Text", test, "Name"); 标签上显示“abc”。如果在数据绑定后更改Name属性,则标签不会反映新值。怎么了?我建议你用另一种方式装订 label.DataBindings.Add
public class Test
{
public string Name { get; set; }
}
Test test = new Test () { Name = "abc" };
label.DataBindings.Add ("Text", test, "Name");
标签上显示“abc”。如果在数据绑定后更改Name属性,则标签不会反映新值。怎么了?我建议你用另一种方式装订
label.DataBindings.Add(new Binding("Text", test, "Name", false, DataSourceUpdateMode.OnPropertyChanged));
我希望这对你有用
另一种方法是更新类以使用值更改事件
class Test
{
private string name;
public string Name
{
get { return name; }
set
{
//Check if you are assigning the same value
if (Equals(name, value))
return;
name = value;
OnNameChanged();
}
public event EventHandler NameChanged;
protected virtual void OnNameChanged()
{
var handler = NameChanged;
if (handler != null)
handler(this, EventArgs.Empty);
}
}
}
以防第一个不起作用
最好的解决办法是用通用的方法
class Test : INotifyPropertyChanged
{
private string name = "";
public string Name
{
get { return name; }
set { name = value; NotifyPropertyChanged(); }
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged()
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Name"));
}
}
}
尝试在属性中使用值更改事件,就像我在编辑中提到的那样。第一个解决方案也不起作用(我已经尝试过了)。第二种可能有效,但这比我为这样一个小问题编写的代码要多得多;-)第二个解决方案是可行的(除了您遇到的一个小语法错误),但我仍然希望有一个更优雅的解决方案。是的,您还可以在类中使用INotifyPropertyChanged。这是一个通用的接口。您的类必须实现INotifyPropertyChanged接口。关于INotifyPropertyChanged接口