WPF,获得双向绑定以处理自定义控件

时间:2010-04-12 22:07:36

标签: wpf binding

双向绑定对我的自定义控件不起作用,具有以下内部:

 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。

1 个答案:

答案 0 :(得分:1)

不要在SelectColor助手中做任何工作(更新颜色选择器)。这些是诱人的包装,并没有保证被称为。 (正如您在双向绑定中看到的那样。)将PropertyChangedCallback添加到SelectedColorProperty元数据中。在那里做你的工作。