我有一些像OverlayColor等属性,我想绑定到不同类型的实例,但绑定数据不会改变。
我用这个:
[Bindable ( true )]
public Color OverlayColor { get; set; }
UI更改但不更改绑定数据。绑定数据的属性名称为Color。
答案 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 ) );
}
}