2009-10-27 138 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)); 
    } 
} 
相關問題