2

現在、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 を使用してこれらを追加できるようにしたいと考えています。

助けてくれてありがとう。

4

2 に答える 2

2

あなたがやろうとしていることを達成するための最良の方法は、あなたが言ったように、カスタム RegionAdapter を作成することです。

これについては、Prism ドキュメントのこのセクション( Region Adaptersの下) で説明されています。

少し前に、アコーディオン コントロール用の Region Adapterを作成しました。これも役立つかもしれません。

これが役立つことを願っています。

于 2011-01-12T12:46:49.010 に答える
1

RbbonRegionAdapterのコードはここにあります。それは私のために働いた。

于 2011-03-01T00:41:53.467 に答える