2009-10-27 76 views
3

我有一些像OverlayColor等属性,我想要绑定到不同类型的实例,但绑定的数据只是不会改变。如何在Winforms控件上设置自定义属性是否可绑定?

我用这个:

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

的用户界面的变化而不是数据绑定。绑定数据的属性名称为Color。

+0

有你在这里重申这个问题 - http://stackoverflow.com/questions/1634265/why-winforms-button-text-works-for-databinding-but-not-imagekey? – ChrisF

+0

它是相似的,但在这里我想知道的属性。但总的来说,他们都是为了获得约束力的工作。 –

+0

这可能是值得链接的问题,但指出了差异,所以这一个不会作为重复关闭。 – ChrisF

回答

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)); 
    } 
} 
相关问题