2017-04-03 14 views
0

30年ほど前、新鮮なフルーツパッカーのための大きなアプリを開発しました。私はInformix-4GLから得られた素晴らしいパラダイムに従っていました。同じ画面で、ユーザーは「例でクエリ」を設定したり、新しい「レコード」を挿入することができます。それは、PgUpキーとPgDwnキーで取り消すことができる "現在のリスト"(結果のクエリ結果と追加された新しいレコード)を維持しました。もちろん、そのすべてのものはマップされたテキストとして表現されていました。 非常に重要なことは、ユーザーが新しいクエリ、挿入または更新(または削除)操作を開始するための「コマンド」を実行するまで、画面がアイドル状態だったことです。 今、そのアプリを進化させる時が来ました。 Wpfとそのプレビュー*のグループのルーティングイベントで、メインユーザーの "コマンド"を捕まえることを考えています。 しかし、多くの画面(データベース内のすべてのエンティティに1つ近く)があるので、それらの間に共通のものを設定することが重要です。 このアプローチのためにWindowsの1つまたは2つの「スーパークラス」を設定するのが最良の方法(Wpfで)ですか? TIAWpfウィンドウ「スーパークラス」

+0

オリジナルのアプリは、Informix-4GLにあった、あなたは、なぜツールなどのいくつかを使用していない「というアプリを進化」するために探している場合Generoなど、あなたのアプリが現代の環境(GUI/Web/Mobileなど)に進化することを可能にするものがありますか? –

答えて

1

技術的には、System.Windows.Windowから継承するクラスを作成し、アプリケーションのすべてのウィンドウにそのウィンドウの継承を持たせ、そのクラスに共通ロジックを実装することができます。

ただし、このアプローチは、WPFなどのXAMLベースのプラットフォームではベストプラクティスとはみなされません。ウィンドウやその他のGUIクラスには、プレゼンテーションに固有のコードのみを含めるようにしてください。 DBクエリを処理するモデルクラスは、これらのモデルを表示するために使用している正確なGUIに依存するべきではありません。

サードパーティのMVVMライブラリは、必須ではありませんが、 IDEの設計時モデルを提供します。特定のライブラリに関しては、最近私はCaliburn Microを好んでいます。その前にMVVM Lightについて肯定的な経験がありました。

MVVMを使用すると、さまざまなモデルクラスで共通のロジックを持つ基本モデルクラスを作成できます。実際、多くの図書館ではそうすることをお勧めしています。彼らはあなたのモデルに独自の基本クラスを提供します。 Caliburn Micro社のScreenまたはPropertyChangedBaseなどです。

+0

チップをありがとうございます。私はキャリバーンを試みている。マイクロ。 – marcelo

+0

私はCaliburn.Microのサンプルをコンパイルしようとしています。それは私がインストールしていない多くのC#6.0コードを持っています。表現のいくつかは簡単に回避することができますが、他の表現は無効にすることができます。私は私があきらめてしまいます。 – marcelo

+0

このことは深刻ですか? 6.0の制限を克服するために、6.0リリース以前のバージョン2.02をダウンロードしました。ライブラリはコンパイルなしでコンパイルされますが、最初のサンプルはエラーがあります。 – marcelo