유저 컨트롤에서 단순히 DependencyProperty를 다음과 같이 생성한 후 callBack 처리를 했습니다.
public static readonly DependencyProperty CurrentStateOfSystemSetListProperty =
DependencyProperty.Register("CurrentStateOfSystemSetList", typeof(ObservableCollection<CurrentStateOfSystemSet>), typeof(SystemSetContainer),
new FrameworkPropertyMetadata(new ObservableCollection<CurrentStateOfSystemSet>(), FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnCurrentStateOfSystemSetListPropertyChanged));
public ObservableCollection<CurrentStateOfSystemSet> CurrentStateOfSystemSetList
{
get { return (ObservableCollection<CurrentStateOfSystemSet>)GetValue(CurrentStateOfSystemSetListProperty); }
set { SetValue(CurrentStateOfSystemSetListProperty, value); }
}
private static void OnCurrentStateOfSystemSetListPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
...
}
위 처럼 했을 경우 CallBack 메서드가 정상적으로 호출이 되는데
해당 DependencyProperty를 유저 컨트롤 자체에서 바인딩 처리를 할려고 xaml에서 아래와 같이 처리 했습니다.
ItemSource="{Binding CurrentStateOfSystemSetList}"
그리고 생성자에서 this.DataContext = this;
DataContext를 지정해주니깐 위의 callBack 메서드 처리가 되지 않는걸 발견 했습니다.
월래 자기 자신이 DataContext 를 갖고 있는 상태에서는 DependencyProperty가 정상적으로 동작하지 않는 것인가요?
위와 같이 DependencyProperty를 Binding 처리 할려면 어떻게 해결 해야 하는지 답변 부탁드립니다.
[최초 등록일: ]
[최종 수정일: 7/15/2015]