双向绑定对我的自定义控件不起作用,具有以下内部:
public partial class ColorInputControl
{
public ColorInputControl()
{
InitializeComponent();
colorPicker.AddHandler(ColorPicker.SelectedColorChangedEvent,
new RoutedPropertyChangedEventHandler<Color>( SelectedColorChanged));;
colorPicker.AddHandler(ColorPicker.CancelEvent,
new RoutedPropertyChangedEventHandler<Color>(OnCancel));
}
public static readonly DependencyProperty SelectedColorProperty =
DependencyProperty.Register
("SelectedColor", typeof(Color), typeof(ColorInputControl),
new PropertyMetadata(Colors.Transparent, null));
public Color SelectedColor
{
get
{
return (Color)GetValue(SelectedColorProperty);
//return colorPicker.SelectedColor;
}
set
{
SetValue(SelectedColorProperty, value);
colorPicker.SelectedColor = value;
}
}
private void SelectedColorChanged(object sender, RoutedPropertyChangedEventArgs<Color> e)
{
SetValue(SelectedColorProperty, colorPicker.SelectedColor);
}
}
SelectedColor被绑定到一个属性,该属性在更改时触发INotifyPropertyChanged事件控件。但是,我不能让双向绑定工作。来自UI的更改将被绑定到数据源。但是,源自数据源的更改不会反映在UI上。
我错过了什么? TIA。
答案 0 :(得分:1)
不要在SelectColor助手中做任何工作(更新颜色选择器)。这些是诱人的包装,并没有保证被称为。 (正如您在双向绑定中看到的那样。)将PropertyChangedCallback添加到SelectedColorProperty元数据中。在那里做你的工作。