2013-04-09 3 views
1

내 애플리케이션은 XML 파일을로드하고 오류를 표시하도록 설계되었습니다 (있는 경우).다른 뷰를 MVVM과 분리 된 상태로 유지하는 방법

내가 가진 문제는 커플 링하지 않고 화면 (XML과 오류)을 모두 표시하는 방법입니다 (현재 응용 프로그램이 작동 함). (더 웃음이나 나에 대한 의견은 물론하시기 바랍니다 포토샵 \ UI에가는)처럼

내 응용 프로그램은 현재 보이는 없습니다 :

enter image description here

갈색 색상 XmlView라는 다른보기이다.
빨간색 상자는 오류를 표시하려는 곳입니다.

그래서 사용자가 파일 -> 열기를 클릭하고 파일을 선택하면 .XML 콘텐츠가 내 XmlView (갈색)에 표시되고 오류 메시지가 빨간색으로 표시됩니다. 이것은 작동하지만, 나는 MainWindow와 XmlView를 완전히 결합했기 때문에 디자인이 좋지 않다는 끔찍한 느낌이 듭니다.

사용자가 유효한 파일 (파일 -> 열기)을 선택하면 내 XmlView의 인스턴스를 만들고이 파일을 내 MainWindow 클래스의 뷰 속성에 바인딩합니다. 내 XmlView MainWindow 형식입니다 1 매개 변수를 사용합니다.

그래서, 내 XmlView 내, 내 ErrorList를 업데이트, 나는

_mainWindow.ErrorList.Add(//newError) 

유사한 코드를 작성하는 것입니다하지만 지금 내 XmlView 내가 원하지 않는 줄 알았는데 내 MainWindow를 알고 의미합니다.

결국, 내 질문! 내 디자인이 형편 없거나 괜찮습니까?

답변

1

using an MVVM framework if you are doing MVVM을 고려해야합니다.

누구의 책임이 XML을로드했는지에 따라 다르지만 MainViewModel이 아닌 XmlViewModel을 제안합니다.

그런 경우 MainViewModel은 다른보기 모델의 지휘자 여야합니다. 첫 번째 경우 XmlViewModel을 인스턴스화하고 파일 경로를 전달하여 현재보기로 설정합니다.

XmlViewModel은 XML로드 및 유효성 검사를 담당합니다. 그것도 유효성 검사 오류를 표시하는 하위 뷰 모델을 가질 수 있습니다. 그것은 어떤 형태의 비지 알림과 함께 XML을 비동기 적으로로드해야합니다.

MainViewModel은 많은보기 모델을 수행하기를 원하므로, Caliburn.Micro과 같은 프레임 워크를 사용하려면 conductor type이됩니다.

+0

이것은 좋은 대답입니다. 그러나 XmlViewModel이 XML의 유효성을 검사하고 문제가 발생하면 문제는 설명 된 커플 링을 사용하지 않고 MainViewModel에 '오류'를 표시하는 방법입니다. 아니면 프레임 워크 중 하나가 도움이 될 수있는 잠재력이 있습니까? – Dave

+1

XmlViewModel의 자식으로 이것을 사용하는 것이 더 좋은 디자인 인 것 같습니다. 동시에 여러 개의 XML 파일을 열어서 동시에 각각의 오류 목록을 만들 수는 없습니까? – devdigital

+1

셸 (MainViewModel 또는 ShellViewModel)에서이 오류 창 /보기를 만들려면 Caliburn.Micro의 EventAggregator에서 제공 한 것과 같은 조정자 패턴을 사용할 수 있습니다. 또한 셸에서 구독하는 표준 .NET 이벤트를 사용할 수도 있습니다. – devdigital