내 WPF 애플리케이션에서 ViewModel의 MainWindow를 사용하여 뭔가를 보내야합니다. 그래서 내 생각은보기 모델의 생성자 난 그냥 윈도우 인스턴스로 전송했던 '이'매개 변수에 사용할 수있는 코드 숨김 다음에 this.DataContext = new ViewModel (this)
을 설정했다 : 이제MainWindow 인스턴스를 ViewModel에 전달
public ViewModel(Window Wndw){/../}
를 내가
<Window bunch
of
stuff>
<Grid x:Name="MainGrid">
</Grid>
</Window>
하지만이 같은 것을 할 때 :해야 할 것은 내 창 안에있는 'MainGrid'요소에 액세스입니다
Grid MGrid = Wndw.FindName("MainGrid") as Grid
을 내가 오류를 얻을하지 않습니다를하지만 항상 null의 경우, 그래서 나는 내가 MGrid를 가지고 무엇인가하려고 할 때, Ep는 널 참조 예외를 얻는다.
반면에 Wndw는 null이 아니며입니다. 또한 전체 창 대신 MainGrid를 전달하는 것은 옵션이 아닙니다.
아이디어가 있으십니까?
그렇게하지 마십시오. 창을 지나쳐 모델을 보지 마라. 그렇다면 MVVM 패턴을 따르는 데는 아무런 쓸모가 없습니다. – ViVi
MVVM 패턴 –
을 엄격하게 따르지는 않습니다. 그런 다음 viewmodel에 전달하는 것보다 Window.xaml.cs에 코드를 작성하십시오. 이것은 쓸모없는 연습 인 것 같다. MVVM을 사용하면 뷰 모델에서 창에 액세스 할 수 있습니다. 이와 같이 모델 생성자를보기 위해 삽입하지 마십시오. – ViVi