質問

私は、リストボックスとフレームを含むWPFページを持っています。フレームは、リストボックス内の選択によって決定それにロードされた様々なページを有している。

フレーム内の各ページには、異なる入力ボックスの様々なていますし、保存ボタンをキャンセルしました。 [保存]ボタンがクリックされたとき、私は、データベースに保存すると、親ページ内のリストボックスが新しいデータを反映するために更新されるコンテンツを必要としています。

のデータを保存するのは簡単ですが、フレームの内側というページからそれを呼び出すときにどのように私は、親ページ内のリストボックスの内容のリフレッシュを開始するのですか?

私は何とかこれを行うには、親ページのコントロールにアクセスできるようにする必要があります。

任意のアイデア?

役に立ちましたか?

解決

それは、親コントロールに達するとそれに含まれるコントロールをあなたの方法を持ってすることは技術的には可能であるが、それはあなたが親コントロールの構造を変更した場合ので、維持することは非常に困難ですコードになり、あなたはすべてのコードを破ります含まれるページの。それは非常に密結合設計と見なされることが多い壊れやすいのです。

somehwatクリーナーのデザインは、[保存]ボタンが押されたときに、ページクラスはイベントを発生させる持っていることであろう。次に、あなたの親フレームには、イベントをシンクして、保存操作の後にリフレッシュする必要性を知っているものは何でもリフレッシュできます。それはあなたのコンポーネントがより緩やかに結合されているので、保守が簡単だが、それはまだあなたのGUIコンポーネントにデータベースの知識の多くを置きます。このような設計では、メンテナンスや将来の拡張の多くを行うことを期待しないで、比較的シンプルなアプリのために適切かもしれません。

(多くの開発者がそうであるように)私が好むデザインパターンを簡単にテストすることができ、簡単なプログラムインターフェイスを1つ以上のクラス内のデータベース処理とビジネスロジックを分離することです。 GUIコンポーネントは、できるだけ単純かつ薄く維持されるので、必要であれば、それらを容易に変更することができます。これは、多くの場合、Model-View-Controllerパターンと呼ばれているが、それのための他の名前があります。あなたの例では、ビジネスロジックをカプセル化する「コントローラ」クラスには、プロパティとメソッドの情報を読み取り、設定するための、およびデータベースへの変更を書き込み、「保存」または「コミット」の方法を持っているでしょう。保存が完了すると、情報が変更されたことの情報を表示する(「ビュー」)すべてのコントロールに通知し、「保存」または「変更」イベントを引き上げると、彼らはあなたのコントローラクラスのプロパティの新しい値に基づいて自分自身をリフレッシュしますます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top