3
我有一些像OverlayColor等属性,我想要绑定到不同类型的实例,但绑定的数据只是不会改变。如何在Winforms控件上设置自定义属性是否可绑定?
我用这个:
[Bindable (true)]
public Color OverlayColor { get; set; }
的用户界面的变化而不是数据绑定。绑定数据的属性名称为Color。
我有一些像OverlayColor等属性,我想要绑定到不同类型的实例,但绑定的数据只是不会改变。如何在Winforms控件上设置自定义属性是否可绑定?
我用这个:
[Bindable (true)]
public Color OverlayColor { get; set; }
的用户界面的变化而不是数据绑定。绑定数据的属性名称为Color。
据我所知,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));
}
}
有你在这里重申这个问题 - http://stackoverflow.com/questions/1634265/why-winforms-button-text-works-for-databinding-but-not-imagekey? – ChrisF
它是相似的,但在这里我想知道的属性。但总的来说,他们都是为了获得约束力的工作。 –
这可能是值得链接的问题,但指出了差异,所以这一个不会作为重复关闭。 – ChrisF