WPF, получая двустороннюю привязку для работы над пользовательским контролем - PullRequest
1 голос
/ 13 апреля 2010

Двухсторонняя привязка не работает на моем пользовательском элементе управления со следующими внутренними компонентами:

 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 при его изменении. Однако я не могу получить двустороннюю привязку к работе. Изменения в пользовательском интерфейсе внесены в источник данных. Однако изменения, происходящие из источника данных, не отражаются в пользовательском интерфейсе.

Что я пропустил? ТИА.

1 Ответ

1 голос
/ 13 апреля 2010

Никогда не выполняйте работу (обновляя палитру цветов) в помощниках SelectColor. Это обертки убедительности и не гарантируется, что их вызовут. (Как вы можете видеть в двухсторонней привязке.) Добавьте PropertyChangedCallback к вашим метаданным SelectedColorProperty. Делай свою работу там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...