現在、PRISM と Microsoft WPF リボン コントロールを使用してアプリケーションを構築しています。これまでのところ、次のようにシェル XAML をコーディングすることで、RegionManager を使用してリボンにタブを追加できました...
...
<r:Ribbon Grid.Row="0" prism:RegionManager.RegionName="{x:Static c:ShellRegion.Ribbon}">
</r:Ribbon>
...
次に、次のように、各モジュールの IModule.Initialize メソッド中にリボンに追加のタブを追加します...
<r:RibbonTab x:Class="Views.RibbonView" Header="TabX">
<r:RibbonGroup Header="GroupX">
<r:RibbonButton Label="Button1" />
<r:RibbonButton Label="Button2" />
</r:RibbonGroup>
</r:RibbonTab>
public void Initialize() {
this.regionManager.RegisterViewWithRegion(ShellRegion.Ribbon, typeof(Views.RibbonView));
}
私が今やろうとしているのは、RibbonApplicationMenu に似たものを実装することです。私は次のことを試しました...
<r:RibbonApplicationMenu x:Class="Views.ApplicationMenu">
<r:RibbonApplicationMenuItem Header="MenuItem1" />
<r:RibbonApplicationMenuItem Header="MenuItem2" />
</r:RibbonApplicationMenu>
public void Initialize() {
this.regionManager.RegisterViewWithRegion(ShellRegion.ApplicationMenu, typeof(Views.ApplicationMenu));
}
しかし、これは実際にはアプリケーション メニュー内にアプリケーション メニューが埋め込まれてしまいます (ドロップ ダウンをクリックすると、別のドロップ ダウンもクリックできるようになると考えてください)。
明らかに、この 2 つの違いは明らかです。タブには個別の RibbonTab を追加し、メニュー項目には実際に別の RibbonApplicationMenu を追加しています。つまり、「ものを一緒にマージする」ために使用できる「RegionAdapters」と呼ばれるものを作成するためのドキュメントが見つかりません。個々のRibbonTabの追加が機能する理由を理解しています(ただし、将来のモジュールでは複数のRibbonTabを追加する必要があり、現在のように、および上記の例のように、各RibbonTabを個別にコーディングする必要はありません)。同様に、RibbonApplicationMenu に間違った子を追加していることを理解しています。これが、RibbonApplicationMenu が埋め込まれている理由ですが、各 RibbonApplicationMenuItem を個別にコーディングした場合 (RibbonTab' があるため)
ここでの質問だと思います(はい、ようやく理解できました)これにどのようにアプローチするのが最善ですか?
理想的な世界では、シェルに追加するすべての RibbonTab を含む単一の XAML ファイル (モジュールごと) を使用できるようにしたいと考えています。同様に、RibbonApplicationMenu に追加するすべての項目を含むモジュールごとに 1 つの XAML ファイルが必要です。最後に、現在行っているように、RegionManager を使用してこれらを追加できるようにしたいと考えています。
助けてくれてありがとう。