1

私のアプリケーションは、XML ファイルをロードし、エラー (ある場合) を表示するように設計されています。

私が抱えている問題は、結合せずに両方 (XML とエラー) を画面に表示する方法です (私のアプリケーションは現在動作しています)。

現在、私のアプリケーションは次のようになっています (私が Photoshop\UI コースに参加していることについて笑ったりコメントしたりしないでください)。

ここに画像の説明を入力

茶色は XmlView と呼ばれる別のビューです。
赤いボックスは、エラーを表示したい場所です。

そのため、ユーザーが [ファイル] -> [開く] をクリックしてファイルを選択すると、.XML コンテンツが XmlView (茶色) に表示され、エラー メッセージが赤で表示されます。これは機能しますが、MainWindow と XmlView を完全に結合しているため、デザインが貧弱であると感じています。

これを機能させる方法は、ユーザーが有効な XML ファイルを ([ファイル] -> [開く] から) 選択したときに、XmlView のインスタンスを作成し、それを MainWindow クラスの Views プロパティにバインドすることです。私の XmlView は、MainWindow タイプである 1 つのパラメーターを取ります。

したがって、XmlView 内で ErrorList を更新するには、次のようなコードを記述します。

_mainWindow.ErrorList.Add(//newError)

しかし、これは、私の XmlView が、望ましくないと思っていた MainWindow を認識していることを意味します。

では、最後に私の質問です!私のデザインは貧弱ですか、それともこれでいいですか?

4

1 に答える 1

1

MVVM を実行している場合は、MVVM フレームワークの使用を検討する必要があります。

XML をロードするのが誰の責任であるかによって異なりますが、.XmlViewModelではなくをお勧めしMainViewModelます。

その場合、MainViewModelは他のビュー モデルのコンダクターである必要があります。最初のケースではXmlViewModel、ファイル パスを渡して をインスタンス化し、それを現在のビューとして設定します。

XmlViewModel、XML の読み込みと検証を担当します。また、検証エラーを表示する子ビュー モデルを持つこともできます。ビジー通知の何らかの形式で、XML を非同期的にロードする必要があります。

MainViewModel多くのビュー モデルを実行する可能性が高いため、Caliburn.Microなどのフレームワークを使用する場合、これはコンダクター タイプになります。

于 2013-04-09T11:35:24.593 に答える