我有2个项目,一个包含我的模型,另一个包含我的视图(Windows窗体)。 我尝试使用绑定在build()方法中根据模型更改刷新我的视图,特别是标签,但这并不起作用。我不知道我的代码是错还是不可能。
编辑:实际上,标签似乎需要在他的窗口中以图形方式更新 Update()或Refresh()调用 ...这可以解释我的问题
有我的Model类:
// ModelBuilder : INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
private Substation currentSubstation;
public Substation CurrentSubstation
{
get
{
return this.currentSubstation;
}
set
{
if (value != this.currentSubstation)
{
this.currentSubstation = value;
NotifyPropertyChanged("CurrentSubstation");
}
}
}
private void NotifyPropertyChanged(String propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public void Build()
{
foreach (Uri substationUri in substationsUri)
{
Substation substation = new Substation(substationUri); // long process
this.CurrentSubstation = substation;
}
}
有我的观点
private void StartImportation_Click(object sender, EventArgs e)
{
this.model = new ModelBuilder();
// Old mistake:
//this.timeLabel.DataBindings.Add(new Binding("Text", this.model.CurrentSubstation,"name"));
this.timeLabel.DataBindings.Add(new Binding("Text", this.model, "CurrentSubstation.name"));
this.model.Build(); // I'd like to see the current substation created name
}
答案 0 :(得分:0)
原因是您绑定到最初的this.model.CurrentSubstation
,但当Build()
ModelBuilder
分配了新的Substation
时。但是,旧的CurrentSubstation
在此过程中从未改变过。
new Binding("Text", this.model.CurrentSubstation, "name")
将绑定更改为
new Binding("Text", this.model, "CurrentSubstation.name")