2011-01-11 13 views
2

現在、PRISMとMicrosoft WPFリボンコントロールを使用してアプリケーションを構築しています。私はこれまで...次のように各モジュールのIModule.Initialize方法の間リボンに追加のタブを追加WPF Microsoft.Windows.Controls.Ribbon.RibbonApplicationMenu&PRISM

... 
<r:Ribbon Grid.Row="0" prism:RegionManager.RegionName="{x:Static c:ShellRegion.Ribbon}"> 
</r:Ribbon> 
... 

した後、次のようにシェルXAMLを符号化しRegionManagerを使用してリボンにタブを追加することができました...

<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を使ってこれらを追加したいと考えています。

ご協力いただきありがとうございます。

+0

記録のために、私はhttp://blog.joachim.at/?p=44、http://wpf.codeplex.com/wikipage?title=WPF%20Ribbon%20Preview&ProjectName=wpf、http: //stalamoni.blogspot.com/2009/02/creating-ribbontab-programatically.html、http://bartekszafko.pl/2008/11/29/en-wpf-ribbon-in-prism-applications/とhttp: /blogsprajeesh.blogspot.com/2009/09/prism-creating-custom-region-adapter.htmlここで質問する前にインスピレーションを受けてください。 –

答えて

2

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

これは、プリズムの文書のthis sectionRegion Adapters)で説明されています。

ある程度前に私はRegion Adapter for the Accordion Controlを作成しましたが、それは役に立つかもしれません。

こちらがお役に立てば幸いです。

+1

+1私は同意します。 'RibbonApplicationMenu'のためのカスタム' RegionAdapter'が行く方法です。 – decyclone

1

RbbonRegionAdapter hereのコードを見つけることができます。それは私のために働いた。

関連する問題