如何在Winforms控件上设置自定义属性可绑定?

时间:2009-10-27 22:46:09

标签: c# .net winforms data-binding

我有一些像OverlayColor等属性,我想绑定到不同类型的实例,但绑定数据不会改变。

我用这个:

[Bindable ( true )]
public Color OverlayColor { get; set; }

UI更改但不更改绑定数据。绑定数据的属性名称为Color。

1 个答案:

答案 0 :(得分:5)

据我所知,Bindable属性是在当前控件的(DataBindings)下添加属性。

要解决绑定时未更新OverlayColor的问题,必须在要绑定的对象上实现INotifyPropertyChanged接口。绑定对象更改后,您必须提升NotifyPropertyChanged事件。

在下面的例子中,我创建了一个Data类,我用它来绑定并调用ChangeColor()方法来改变颜色。

public class Data : INotifyPropertyChanged
{
  Color overlayColor = Color.Teal;

  public event PropertyChangedEventHandler PropertyChanged;

  public Data()
  {
  }

  public Color OverlayColor
  {
    get
    {
      return overlayColor;
    }
    set
    {
      overlayColor = value;
      NotifyPropertyChanged( "OverlayColor" );
    }
  }

  public void ChangeColor()
  {
    if ( OverlayColor != Color.Tomato )
      OverlayColor = Color.Tomato;
    else
      OverlayColor = Color.DarkCyan;
  }

  private void NotifyPropertyChanged( string propertyName )
  {
    if ( PropertyChanged != null )
      PropertyChanged( this, new PropertyChangedEventArgs( propertyName ) );
  }
}