MVVM을 염두에두고 하위 창을 여는 올바른 방법 (예 : 기본 창에서 선택한 항목을 수정)은 무엇입니까? MainWindow.xaml (그리고 MainWindow.xaml.cs를에 자체의 DataContext로 MainVM를 할당) 나는 또한하고 싶은복잡한 객체를 하위 창에 전달
: 여기
내가 가진 무엇 ChildWindow.xaml 및 베어 본 ChildWindow.xaml.cs을 함께 컨트롤 뒤에 ChildVM. 그래서, 지금:
- 어떻게
ChildWindow
팝업과ChildVM
일부 개체Data
를 전달할 수 있습니다? - 결과 (참/거짓)와 결과 데이터 (일부 복합체 개체)를
MainVM
으로 되 찾으십니까? ChildVM
으로 작업하는 동안Data
의 변경 사항이 으로 변경 될 수 있습니까?
다음은 내가 시도한 것입니다. 모든 것을 해결하지는 못했지만 올바른 방향일까요? 용
- (2), I는 3 DependencyProperties을 갖는다
DialogWindow
라는Window
의 서브 클래스 생성 (부울 결과의) (출력 데이터) (입력 데이터)Data
,ResultData
및ResultValue
한다. ResultData
및ResultValue
모두는 Binding을 사용하여ChildVM
이DialogWindow
으로 설정되고,ResultValue
이 설정되면DialogWindow
이 닫힙니다.지금은
ChildWindow
이 MainWindow.xaml.cs에서 시작되었습니다 (모든 의도와 목적으로). 다소 좋지 않습니다. 나는 다음과 같이 몇 가지 입력 데이터를 전달할 수 있습니다
w.Data = myDataObj;
ChildDialogWindow w = new ChildDialogWindow();
Data
이 필요하고, ChildDialogWindow.xaml.cs에서 설정합니다. 다시 말하면 .xaml.cs를 더 두껍게 만듭니다.
MainWindow.xaml.cs를 피하는 더 나은 방법은 MainVM
에 의존성으로 전달되는 DialogService
일종일 수 있다고 생각했습니다. 그런데 어떻게 ChildVM
에 값을 전달할 수 있습니까?
[어쩌면 이것 좀 봐?] (http://stackoverflow.com/a/16994523/1834662) – Viv
@Viv이는 나쁘지 않다 그것은 프레임 워크를 사용 제외 , 나는 피하기를 바랐다. 아마도 SimpleIoC와 같은 다른 프레임 워크에 의존하지 않는 한 메신저 코드를들 수 있습니다. –
프레임 워크를 사용하지 않는 이유는 무엇입니까? 네이티브 C 코드를 작성하고 피할 수 있습니다. .net all-together :) 당신의 의도가 기능을 "배우는"것이라면, 항상 소스를 얻고 구현 방법을 직접 확인하고 스스로 할 수 있습니다. 'SimpleIoC'는 매우 간단한 DI 컨테이너입니다. 당신이 광범위한 기능을 원한다면 유니티를 살펴보고 정렬 할 수 있습니다. 나는 단지 "의존하지 않기"를 위해서 휠을 다시 발명하는 팬이 아닙니다. – Viv