UI 設定システムを実現する必要があります。UI 要素の一部のプロパティ (実行時にユーザーが変更できます) を永続ストレージからロード/保存します。例えば:
- DevExpress グリッド コントロール - 列幅、可視性、要約領域など (このコントロールには RestoreLayoutFrom/SaveLayoutTo などのメソッド ペアのセットがありますが、SaveLayoutToStream(Xml) は grid.Unloaded ハンドラーでは機能しません - グリッドが PresentationSource から切断されている場合)
- GridSplitter を介してユーザーが幅/高さを調整できるグリッドの行/列
- かなりのポップアップ コントロール
コントロールのロード/初期化などの後、設定ストレージからコントロールのプロパティをセットアップするのは簡単ですが、保存する設定を取得するために、コントロールがアンロードされる前の瞬間 (ビジュアル ツリーに残っているとき) をどのように捉えますか?
簡単な説明
シングルトンを作成するつもりです-UISettingsManager。これには、[要素Uid、要素設定データ]のペアを持つディクショナリが含まれています。ビジュアル コンテナー (Window、UserControl) では、このマネージャーは次のように使用できます。
public partial class PageHeader : UserControl
{
public PageHeader()
{
InitializeComponent();
UISettingsManager.RestoreSettings(myGridControl);
UISettingsManager.RestoreSettings(myPopup);
}
}
myGridControl と myPopup には (アプリケーション スコープ内で) 一意の Uid があるため、UISettingsManager は内部辞書から設定を取得してコントロールに適用できます。もちろん、UISettingsManager は、いくつかの異なるタイプのコントロールを操作する方法を知っています。
しかし、コントロールの設定を格納するのに適切なタイミングは、ウィンドウとユーザー コントロールのどちらのコンテナーでしょうか?