これは間違いなく機能します。しかし、より堅牢なアプローチは、プリズム...より具体的にはIRegionManagerを使用することになります。
これは、アプリケーション内で地域内でコンテンツをプッシュできる地域を定義する方法です。例はad
がAvalonDockアセンブリの名前空間です...
<ad:DockingManager Grid.Row="1" Margin="0">
<ad:DocumentPane x:Name="WorkspaceRegion" prismrgn:RegionManager.RegionName="WorkspaceRegion"/>
</ad:DockingManager>
...だろう。しかし、あなたのDockPanel
はまったく同じである可能性があります。これは次のように後ろにコードで参照することができ...
_regionManager.AddToRegion("WorkspaceRegion", workspaceContent);
_regionManager.Regions["WorkspaceRegion"].Activate(workspaceContent);
... _regionManager
がWorkspaceRegion
にworkspaceContent
を配置するオブジェクトのコンストラクタ内DIを介して受信されたインスタンスです。
これは、特定のアクションに対して表示されるインターフェイスを駆動する、Ribbon
アクションに関して素晴らしいデカップリングを提供します。また、領域自体に抽象化を提供します。つまり、DockPanel
または他のコントロールです。
前述のように、最初のアプローチが有効です。懸念と機能性を分離するためにプリズムなどのフレームワークを選択する必要があるかどうかは、現在および将来の両方でこのプロジェクトの規模に依存します。
偉大な答えと説明!私は一部の人々がここで働いていることを知っているので、私はプリズムオプションを調べます。これは、私がユーザーコントロールのドッキングオプションにとどまる可能性があるので、*成長してはならない小さなプロジェクトです。 – knockando