我有一些属性,如OverlayColor等,我想将其绑定到不同类型的实例上,但绑定的数据却没有改变。
我使用了以下代码:
[Bindable ( true )]
public Color OverlayColor { get; set; }
UI会发生改变,但绑定的数据不会改变。绑定数据的属性名称是Color。
我有一些属性,如OverlayColor等,我想将其绑定到不同类型的实例上,但绑定的数据却没有改变。
我使用了以下代码:
[Bindable ( true )]
public Color OverlayColor { get; set; }
我理解 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 ) );
}
}