간단한 MVVM 패턴을 다루었으므로 이후 WPF에서 데이터 바인딩의 모든 기능을 자세히 살펴 보았습니다. 나는 내가 머리를 감쌀 수없는 문제에 봉착했다. 우선 다음 MainWindowViewModel 코드를 가지고 :WPF MVVM Multiple View Issue, ListBox.SelectedItem 사용
는ObservableCollection<DataRecord> _SomeData = new ObservableCollection<DataRecord>();
public ObservableCollection<DataRecord> SomeData
{
get
{
return _SomeData;
}
set
{
_SomeData = value;
}
}
public MainWindowViewModel()
{
CurrentViewModel.Add(new RandomViewModel(SomeData));
}
대신 코드의 전체 길이를 붙여, 나는 각 기본 추가 (이미지 탐색)의 이미지 속성을 참조, ViewModelBase의 ObservableCollection에 <>에리스트 박스를 결합했다. 지금! 문제 :
나는 ListBox.SelectedItem에서 반환 된 문자열을 사용하여 ViewModel에서 뷰를 참조하기 위해 DataTemplate을 사용하고 있습니다. RandomViewModel은 매개 변수를 전달해야하기 때문에 ListBox.SelectedItem을 클릭 할 때마다 ListBox에서 생성 된 뷰 대신 새 뷰가 인스턴스화됩니다. 이 문제가 발생하는 이유는 간단합니다. 새 View에서는 RandomViewModel을 사용하여 데이터 바인딩을 참조해야합니다. 그래서! ViewModel/View Navigation에 대한 악명 높은 ListBox.SelectedItem을 사용하여 ViewModel에 매개 변수가 전달되어야하더라도 View를 만들고 그 ViewModel을 참조해야하는 이유는 무엇입니까? 또는! 이미 인스턴스화 된 ViewModel을 사용하여 새로 생성 된 View에 대한 참조로 사용하려면 어떻게해야합니까?
나는 당신이 가진 것을 정말로 이해하지 못합니다. – MBen
나는 질문에 충분한 무게가 있다고 생각했다. 그 질문에 답하는 데 도움이 될만한 것이 무엇인지 놓치셨습니까? – user1280092