【发布时间】:2018-12-21 12:46:55
【问题描述】:
我有带有 BindingSource 属性的标签数据绑定。 Label.Text 属性只更新一次。
这是属性绑定到标签的方式
this.lblWorkPlace.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.appStateBindingSource, "ResourceName", true));
我也尝试将相同的属性绑定到文本框和文本框更新正确
this.lTextEdit1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.appStateBindingSource, "ResourceName", true));
可能出了什么问题?
更新
这是我的“状态”类
public class AppState: INotifyPropertyChanged
{
private static Operation _activeTask;
private static AppState _instance;
public static AppState Instance
{
get => _instance ?? (_instance = new AppState());
}
public Operation ActiveTask
{
get => _activeTask;
set
{
if (value != _activeTask)
{
_activeTask = value;
RaisePropertyChanged("ResourceName");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(string prop)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
public string ResourceName => ActiveTask?.Operacija?.acResursName.Trim() ?? "";
}
}
【问题讨论】:
-
您希望标签文本如何更新,您是否在循环中使用它?
-
提供此绑定的属性的代码在哪里?此外,您可能希望将
DataSourceUpdateMode.OnPropertyChanged添加为 DataBindings 中的最终参数。 -
我希望在属性文本更改时更新该标签,因为文本字段会更新但标签不会
-
Label和TextBox的工作方式相同,没有蚂蚁问题。 (而且您可能知道AppState实例的ActiveTask属性一开始是 null ,一旦您将Operation分配给该属性,标签/文本框就会更新。
标签: c# .net winforms data-binding