나는 자신의 컨트럭터를 통해 할당 된 WPF 애플리케이션에 연결된 MainViewModel이있는 MainView를 가지고있다.중첩 된 뷰에 개별 뷰 모델 할당?
앱> URI를 시작 > MainWindow.xaml
public MainWindow()
{
InitializeComponent();
var viewModel = new MainViewModel();
DataContext = viewModel;
}
내 MAINVIEW는 최대 네 중첩 된 뷰 또는 숨겨지고 있었다 버튼에 따라 표시되는 아이 뷰를 보유하고
MainView를 클릭하십시오. 그래서 우리는 MainView의 각 버튼에 할당 된 명령 바인딩을 통해 업데이트되는 바인딩에 대한 가시성 속성을 토글합니다.
각 중첩 된 뷰에는 연결된 ViewModel이 없으며 하위 뷰에있는 모든 바인딩은 MainViewModel에서 해당 정보를 찾습니다. 그래서 바인딩 시스템은 부모 'MainView'가 연결된 ViewModel을 가지고 있는지 확인하기 위해 앱의 UI 트리를 마무리합니다.
전체적으로 'ONE'-> ViewModel입니다. 이것은 잘 작동하는 것으로 보이지만 예상대로이 VM은 커지고 리팩토링이 필요합니다. 문맥 상으로해서는 안되는 정보를 보유하고 있습니다. 그러나 이것은 증명 개념 응용 프로그램입니다. 그래서 나는 그것을 간단하게 유지하고 그것이 할 수 있는지 확인하기로 결정했습니다.
문제 : 내가 출력 창에 예상 이상 깨진 행동으로 바인딩 오류를 발견 빈 뷰 모델로 빈보기를 할당 시도
. 어느 말이 합당하지 않습니다 ... WPF가 중첩 된 뷰 컨트롤에서 찾은 모든 바인딩을 처리하는 방법을 알 수있는보다 명확하고 간결한 방법이 있습니까? 각 뷰의 생성자가 위에 표시된 것과 같이 해당 VM을 할당했다면 논리적으로 합리적으로 작동해야한다고 생각했습니다. 불행하게도 MainView의 모든 버튼은 해당 뷰가 켜져 있고 다른 뷰를 숨기도록 지정된 ViewModel이있을 때 작동을 멈 춥니 다. 일부 버튼에서는 작동하지만 다른 버튼에서는 작동하지 않습니다. 이건 정말 이상하니?