Expression Blend를 사용할 수 있도록 MVVM 앱에서 View/ViewModel 바인딩을 수행하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1017276

  •  06-07-2019
  •  | 
  •  

문제

당신이 사용할 때 MVVM 비주얼 스튜디오 템플릿, 그러면 ViewModel은 다음과 같이 App.xaml.cs에 있는 View의 DataContext에 바인딩됩니다.

MainView mainView = new MainView();
mainView.DataContext = new MainViewModel();
mainView.Show();

그리고 만약 당신이 사용한다면 복합 애플리케이션 라이브러리, 그러면 Bootstrapper/Container/ServerLocator 등에서 View와 ViewModel이 함께 바인딩됩니다.

어쨌든 Expression Blend에서 이러한 프로젝트를 열고 View XAML 파일을 열면 Expression blend는 어떤 ViewModel이 어떤 View에 속하는지 알 수 없습니다. 왜냐하면 이 바인딩은 위의 경우와 같이 코드에서 수행되기 때문입니다.

물론 DataObjectProvider XAML에서 Expression Blend는 해당 뷰에 대한 데이터를 어디서 얻을 수 있는지 알지만, 이제 뷰가 ​​특정 ViewModel에 고정되어 있으므로 이렇게 하면 MVVM과 분리 패턴이 깨집니다. 디자이너가 간단한 데모 이상의 프로젝트에서 Expression Blend를 사용하여 작업하는 방법은 다음과 같습니다.

그렇다면 MVVM 패턴을 사용하고 Expression Blend를 사용하는 디자이너가 있는 경우 Expression Blend가 어떤 ViewModel이 어떤 뷰에 속하는지 알 수 있도록 View/ViewModel 바인딩 구조를 어떻게 유지하고 있습니까?

도움이 되었습니까?

해결책

Blend는 애플리케이션을 실행하지 않더라도 코드를 로드하고 실행합니다.뷰 생성자 또는 다른 더 적절한 메서드에서 DesignerProperties.GetIsInDesignMode(...)인 경우 일부 샘플 DataContext를 로드합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top