본문 바로가기

개발새발/C#

[C#/WPF] TabControl ItemsSource 바인딩 시 ViewModel을 상속받지 않고 생성자를 호출하는 문제 해결.

개발하다보니 또 난관이다.

Tab Control에 Items Source로 ObservableCollection<ViewModel>을 바인딩했다.

생성될 각 탭에 대한 화면은 UserControl로 정의하고 MainView에 DataTemplate을 적용해주었다.

 

문제는 바인딩된 리스트에 자식을 만들면 그 값이 바로 View로 넘어가는 게 아니라 해당 값으로 View에 뿌려줄 인스턴스를 재생성하는 것이다. 그렇게 되면 View에서 만들어진 인스턴스와 메인 뷰모델이 가진 인스턴스에 차이가 발생한다.

 

+++

 

알고 보니 내가 DataContext를 설정 해 주어서 2번 로드 되는 거였다.

UserControl에 설정되어 있던 DataContext 항목을 삭제하면 동적으로 생성된(Observable Collection 바인딩 된) ViewModel에 자동 바인딩 되므로 아무것도 해결할 필요가  없어진다. 

 

뻘짓이었다...