2010-04-12 3 views
1

두 다음 내부 내 사용자 지정 컨트롤에 바인딩이 작동하지 않습니다 방법 :WPF, 사용자 지정 컨트롤 작업에 결합하는 두 가지 방법을 점점

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

XAML 바인딩을 표시하십시오. 그리고 SetValue에 대한 호출 외에도 DP의 setter에 코드가 없어야합니다 (WPF는 사용자의 setter를 사용하지 않으므로) – Timores

답변

1

SelectColor 도우미에서 작업하지 마십시오 (색상 선택기 업데이트). 그것들은 설득력있는 포장지이며 부름을 받도록 보증되지 않습니다. (양방향 바인딩에서 알 수 있듯이) SelectedColorProperty 메타 데이터에 PropertyChangedCallback을 추가합니다. 거기서 일하세요.

관련 문제