2010-12-28 4 views
5

저는 WPF & MVVM 세계에 새로 왔으며, 지난 며칠 동안 최대한 많은 자습서를 다운로드하고 가능한 많이 읽는 데 보냈습니다! ,MVVM - 목록에서 선택한 항목을 기반으로 창을 여는 방법은 무엇입니까?

내가 MVVM의 기초를 가지고 :-) 그리고 심지어 예 지휘 - 나는 그러나 MVVM와 매우 기본적이고 일반적인 개념을 구현하고 어떤 도움을 필사적 위해 고군분투하고

, 그리고 심지어 messenging; 하지만 어떻게 새치 창을 열고 창 ViewModel을 목록 상자의 선택된 항목으로 설정합니까? 나는 모델이 클라이언트라고 한 을 그리고 그때 나는 이름 & 성에서 표시 화면이 ObservableCollection에 에 내 모든 클라이언트 및 저장을 얻는 뷰 모델이 어떤 특성을 가지고 :

설명해 드리죠 목록 상자를 만들고 사용자가 필터링하고 검색 할 수있게합니다.

위의 모든 작업이 완벽합니다.

사용자가 항목을 선택하면 특정 클라이언트의 편집 가능한 '상세 클라이언트보기'화면을 열고 싶습니다. 이 세부적인 화면의 ViewModel은 어떻게 든 선택한 항목에 바인딩해야합니다 (이해되는 경우). 또는 새로 열린 스크린의 ViewModel에 매개 변수를 전달할 수 있어야합니다. 사실, 사용자가 여러 세부 화면을 동시에 열고 여러 개의 클린트를 편집 할 수 있다면 좋을 것입니다!

누구나 나를 좋은 예를 들어 주거나 ​​올바른 방향으로 향하게하면 정말 좋을 것입니다!

많은 감사, 브렌든은

나는 다음과 같은 않는 ListBox.SelectionChanged에 이벤트 추가 할 수

답변

2

:

  • 새로운 대화와 DialogViewModel
  • 가에 DialogViewModel.EditableContentProperty 바인드 작성 ListBox의 SelectedItem
  • Dialog.DataContext = DialogViewModel
  • Dialog.ShowDialog()
+0

감사 레이첼, 내가 가지 바로왔다. 내 DetailViewModel에 대한 생성자를 생성하고이를 DetailViews datacontext에 두 번 클릭하여 listview 코드 숨김에 바인딩했습니다. 분명히 코드를 생성하고 바인딩 할 수있는 코드를 "클릭하지"않았기 때문에 ... – Brendan

+0

대화 상자를 작성하는 것이 코드 낭비가 될 정도로 대화 상자가 너무 작 으면 안됩니다. 모델. 이상적으로 모든 프리젠 테이션 로직은 새로운 뷰 회전 및보기 모델 회전과 같은 탐색을 포함하여 뷰 모델에 있습니다. –

+0

ViewModels에서 완전히 처리하기를 원한다고해도 비슷한 방식으로 처리 할 것입니다. 주요 차이점은 ListBox.SelectionChanged가 ViewModel Command를 가리키고 코드가 코드 숨김 대신 VM에있는 것입니다. – Rachel

2

은 간단히 말해 :

//Create the Client Detail form 
frmClientDetails frm = new frmClientDetails(); 
frm.Owner = this; 
var ViewModel = new ClientDetailViewModel((Client)lstFoundClients.Items.CurrentItem); 
frm.DataContext = ViewModel; 
frm.Show(); 
관련 문제