3

XML を表すツリービューを持つ WPF アプリケーションに取り組んでいます。XML を XDocument に読み込み、TreeView をこのオブジェクトにバインドします。

MVVM パターンを使用して、 XDocumentの上にViewModelを提供したいと考えています。ViewModel クラスに実装する必要があるものは何ですか。

私が考えているのは、

  1. TreeView の ContextMenu コマンドにバインドして、ノードの追加、ノードの削除、ノードの変更などを許可する RoutedCommands
  2. ビューの属性とノード名を実際に変更するロジック。

私は正しい方向に進んでいますか?よりクリーンでモジュール化すると同時に理解しやすくするには、他に何をすべきですか。

RoutedCommands を使用するか、ICommand インターフェイスを実装してコマンドを作成する必要がありますか? CommandBindings に添付プロパティを使用するのはどうですか? 私が話しているツリービューアプリでそれを行うのは理にかなっていますか? これを実装するために利用できるオプションが非常に多いため、少し圧倒されます。

この種のことを行うリンク、サンプルコードを持っている人はいますか? リファレンス実装は?

4

1 に答える 1

1

同感です。私はから始めました

(ui) <-> (xml)

ここで、xml は LINQy XElements として表されるため、PropertyChange 通知を受け取りました。

次に、xml を扱うのに役立つステートレス ヘルパー クラスをいくつか追加しました (プロパティの公開、データの検証など)。ObservableCollections に XElements をバンドルして、それらにバインドできるようにします。

MV-VM について読み、ヘルパー クラスを ViewModel に変換することにしました。問題: ヘルパー クラスは、UI について何も知らないデータ モデルの名前空間に存在します。ヘルパー クラスはデータベースの行を XElement に変換する方法を知っていますが、ViewModel はそれを決して認識しません。ヘルパー クラスは xml を扱います。ViewModel は知っているべきでも、気にするべきでもありません。

だから私は実際に実装を検討しています

(ui) <-> (ビューモデル) <-> (ヘルパー) <-> (xml)

しかし、ビューモデルでそれらを再発生させるためだけに、ヘルパーで PropChange イベントを発生させることに躊躇しています。

于 2008-11-15T08:15:23.397 に答える