2011-01-11 13 views
2

Ich bin derzeit den Aufbau einer Anwendung mit PRISM und das Microsoft WPF Ribbon Kontrolle. Ich habe bisher in der Lage gewesen, Laschen auf das Band durch Codieren der Schale XAML RegionManager wie folgt hinzufügen ...WPF Microsoft.Windows.Controls.Ribbon.RibbonApplicationMenu & PRISM

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

und dann Hinzufügen zusätzlicher Laschen an dem Band während des IModule.Initialize Verfahren jedes Moduls wie folgt ...

<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)); 
} 

Was ich jetzt zu tun versuche, ist etwas ähnliches für die RibbonApplicationMenu zu implementieren. Ich habe versucht, die folgenden ...

<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)); 
} 

aber das endet tatsächlich mit einem Anwendungsmenü im Anwendungsmenü eingebettet oben (man denke nach unten auf Drop klicken und ein weiterer Tropfen wird nach unten für Sie auch klicken).

Offensichtlich kann ich den offensichtlichen Unterschied zwischen den beiden sehen; Für die Registerkarten füge ich ein individuelles RibbonTab hinzu und für die Menüpunkte füge ich ein weiteres RibbonApplicationMenu hinzu. Die Sache ist, ich kann keine Dokumentation darüber finden, etwas zu erstellen, von dem ich glaube, dass es "RegionAdapters" heißt, mit dem ich "Dinge zusammenfügen" kann; Ich verstehe, warum einzelne RibbonTab-Arbeiten hinzugefügt werden (obwohl in Zukunft möglicherweise Module mehrere RibbonTabs hinzufügen müssen und ich nicht unbedingt jedes RibbonTab einzeln codieren müsste, wie ich derzeit habe und wie im obigen Beispiel). Ähnlich verstehe ich, dass ich das falsche Kind zum RibbonApplicationMenu hinzufüge und deshalb bin ich in einem eingebetteten RibbonApplicationMenu resultierend, während, wenn ich jedes RibbonApplicationMenuItem einzeln kodierte (wie ich das RibbonTab habe) und sie entsprechend addiere, dann sie auch arbeiten.

Ich denke, die Frage hier (ja, ich habe es endlich bekommen) wird am besten wie man diesen Ansatz?

In einer idealen Welt, ich möchte in der Lage sein, eine einzelne XAML-Datei (pro Modul), die alle die RibbonTab des enthält, die ich an die Schale hinzugefügt werden soll. Ebenso möchte ich eine einzelne XAML-Datei pro Modul, die alle Elemente enthält, die ich dem RibbonApplicationMenu hinzufügen möchte. Zum Schluss möchte ich diese mit dem RegionManager wie bisher hinzufügen können.

Vielen Dank im Voraus für jede Hilfe.

+0

Für das Protokoll, ich habe bei http://blog.joachim.at/?p=44, http://wpf.codeplex.com/wikipage?title=WPF%20Ribbon%20Preview&ProjectName=wpf, http sah //stalamoni.blogspot.com/2009/02/creating-ribbtab-programatically.html, http://bartekszafko.pl/2008/11/29/en-wpf-ribbon-in-prism-applications/ und http://blogsprajeesh.blogspot.com/2009/09/prism-creating-custom-region-adapter.html für Inspiration, bevor Sie hier fragen. –

Antwort

2

Der beste Weg, um das zu erreichen, was Sie versuchen, ist, wie Sie bereits sagten, das Erstellen eines benutzerdefinierten RegionAdapters.

Dies wird in this section der Prism-Dokumentation erklärt (unter Region Adapter).

Vor einiger Zeit habe ich eine Region Adapter for the Accordion Control, die Sie auch nützlich sein könnten.

Ich hoffe, das hilft.

+1

+1 stimme ich zu. Custom 'RegionAdapter' für' RibbonApplicationMenu' ist der richtige Weg. – decyclone

1

Sie können Code für einen RbbonRegionAdapter here finden. Es hat für mich funktioniert. :