2012-09-12 3 views
1

구성원으로 채워진 DataGrid가있는 UserControl이 있습니다. DataGrid.ItemsSource는 모델의 ObservableCollection에 바인딩됩니다. DataGrid.SelectedItem은 모델의 SelectedMember 필드에 바인딩됩니다. SelectedMember._set은 NotifyPropertyChanged를 호출하고 이벤트는 노출 된 DependencyProperty에 대해 SetValue()를 호출합니다.외부 뷰 모델을 업데이트하지 않는 Custom DependencyProperty

이 UserControl은 페이지에 있습니다. 해당 페이지에는보기 모드가 있습니다. UserControl.CurrentMember를 viewmodel.SelectedMember에 바인딩하려고하는데 변경되지 않았습니다. CurrentMember.MemberName을 텍스트 상자에 바인딩 할 수 있으며 UserControl이 DependencyProperty를 올바르게 노출하고있는 것처럼 보이도록 상자가 멤버 이름으로 채워집니다. 그러나 모델에 바인딩하면 업데이트되지 않습니다.

교차 바인딩을 찾을 수 없습니다. 텍스트 상자에 바인딩 제대로 작동합니다. 페이지 모델의 필드는 새롭기 때문에 아무 것도 바인딩되어 있지 않습니다.

무엇이 문제 일 수 있습니까? 페이지 모델의 필드가 DependencyProperty 여야합니까? 이 경우 컴파일러에서 오류가 발생합니다.

나는 코드 샘플을 얻으려고 노력할 것이지만 너무 뿌리깊이있어 단지 몇 줄의 코드 만 게시 할 수는 없다. 톰 P.

+0

TwoWay 바인딩이 누락 되었습니까? 텍스트 상자 텍스트는 기본적으로 TwoWay입니다. – dowhilefor

+0

TwoWay, OneWay, OneWayToSource 시도했습니다 ... 유일한 일은 StackOverflow 예외가 있습니다. DependencyProperty에 TwoWayByDefault를 추가했습니다. 그것의 아무도는 돕지 않는다. –

답변

0

코드를 빗질하고 새 프로젝트에서 문제를 복제하려고하면 나는 문제를 발견했다.

UserControl에서 나는 모델에 DataContext를 설정했다. 그러나 UserControl.DataContext 페이지에 넣을 때 덮어 씁니다 가져옵니다. 내가해야 할 일은 MainGrid의 이름을 지정하고 MainControl의 DataContext를 UserControlModel로 설정하는 것입니다. UserControl 전용 인 MainGrid는 덮어 쓰지 않습니다. 이제는 훌륭하게 작동합니다.

관련 문제