C#通过其他项目解决方案发送数据通知(绑定)

时间:2014-07-31 15:12:33

标签: c# forms binding refresh

我有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
}

1 个答案:

答案 0 :(得分:0)

原因是您绑定到最初的this.model.CurrentSubstation,但当Build() ModelBuilder分配了新的Substation时。但是,旧的CurrentSubstation在此过程中从未改变过。

new Binding("Text", this.model.CurrentSubstation, "name")

将绑定更改为

new Binding("Text", this.model, "CurrentSubstation.name")