【问题标题】:How to set custom properties on a Winforms control bindable?如何在可绑定的 Winforms 控件上设置自定义属性?
【发布时间】:2009-10-27 22:46:08
【问题描述】:

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

我用这个:

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

UI 发生变化,但绑定的数据没有变化。绑定数据的属性名称为 Color。

【问题讨论】:

  • 您是否在此处重述了这个问题 - stackoverflow.com/questions/1634265/…
  • 这很相似,但在这里我想知道属性。但总的来说,它们都是为了让绑定正常工作。
  • 可能值得将问题链接起来,但指出其中的差异,这样这个问题就不会因为重复而被关闭。
  • 你说得对,下次再做。

标签: c# .net winforms data-binding


【解决方案1】:

据我了解,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 ) );
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2010-10-29
    • 2011-05-11
    • 2011-03-20
    相关资源
    最近更新 更多