2008-11-04 5 views
3

XML을 나타내는 트리 뷰가있는 WPF 응용 프로그램에서 작업하고 있습니다. XDocument에 XML을로드 한 다음 TreeView를이 객체에 바인딩합니다. XDocument의 맨 위에있는 ViewModel

이제 MVVM pattern를 사용하여, 나는 하여 XDocument의 상단에 뷰 모델를 제공하고자합니다. ViewModel 클래스에서 구현해야하는 것들은 무엇입니까? 의 ContextMenu에 결합 내가 생각하고

,

  1. RoutedCommands 실제로 뷰의 특성 및 노드 이름을 수정하는 노드 등
  2. 논리를 수정, 노드를 제거, 노드를 추가 할 수 있도록 트 리뷰에 명령한다.

올바른 방향으로 가고 있습니까? 더 깨끗하고 모듈화 된 기능을 이해하기 쉽도록하려면 무엇을해야합니까?

RoutedCommands를 사용하거나 ICommand 인터페이스를 구현하고 명령을 만들어야합니까? CommandBindings에 대해 연결된 속성 사용은 어떻습니까? 내가 말하는 Treeview 응용 프로그램에서이 방법을 사용하는 것이 합리적입니까? 이 옵션을 구현할 수있는 옵션이 너무 많기 때문에 약간 압도되었습니다.

누구나 이런 종류의 작업을 수행하는 링크가 있습니까? 참조 구현은?

답변

1

나는 당신과 함께합니다. XML은 LINQy XElements로 표현

그래서 난에 PropertyChange 통지를 받았습니다> (XML) - 나는

(UI) < 시작했다.

그런 다음 xml (속성 표시, 데이터 유효성 검사 등)을 처리하는 데 도움이되는 몇 가지 stateless 도우미 클래스를 추가했습니다. ObservableCollections에 XElements를 묶어서 바인딩 할 수 있습니다.

M-V-VM에 대해 읽어보고, 도우미 클래스를 ViewModels로 변환하기로 결정했습니다. 문제 : 도우미 클래스는 UI에 대해 아무것도 모르는 데이터 모델 네임 스페이스에 있습니다. 도우미 클래스는 데이터베이스 행을 XElement로 변환하는 방법을 알고 있으므로 ViewModel은이를 결코 볼 수 없습니다. 도우미 클래스는 xml을 처리합니다. ViewModel은 알거나 신경 쓰지 않아야합니다. 그래서

실제로

구현을 고려하고

(UI) < -> (뷰 모델) < -> (도우미) < -> (XML)

하지만 난 그냥 도우미에 PropChange 이벤트를 제기 놓치다 오직 뷰 모델에서 그들을 재현하는 것입니다.

관련 문제