2009-05-31 6 views
0

Ich versuche gerade, das WPF-Menü vertikal rendern zu lassen. Ich habe den folgenden Code:WPF vertikales Menü - zeigt das erste Untermenü links

<Menu.ItemsPanel> 
    <ItemsPanelTemplate> 
     <VirtualizingStackPanel Orientation="Vertical"/> 
    </ItemsPanelTemplate> 
</Menu.ItemsPanel> 

, das in Ordnung, aber ich würde die Untermenüs wie auf der linken Seite jeder Wurzel menuitem zu zeigen. irgendwelche Hinweise, wie es geht?

Antwort

0

Sie sollten Vorlage der MenutItem Kontrolle optimieren. Wenn Sie keine Beispiele für die Vorlage dieses Steuerelements haben, können Sie eine mit der Funktion "Vorlage bearbeiten -> Kopie bearbeiten ..." von blend erstellen. Dort müssen Sie eine Popup Kontrolle finden und ändern Sie die Platzierungseigenschaft zu was auch immer Sie wollen. In diesem Popup werden die Unterelemente gehostet.

-1
<Menu> 
    <Menu.ItemsPanel> 
     <ItemsPanelTemplate> 
      <VirtualizingStackPanel Orientation="Vertical"/> 
     </ItemsPanelTemplate> 
    </Menu.ItemsPanel> 
</Menu> 

Ich hoffe, dass diese

+0

das ist genau der Code der OP gepostet – Mark

2

Sie sollten das Styling und Templating-Methode kann helfen, ist Ihre neue MenuItem Vorlage erstellen. Für Details des Styling und Templating finden Sie in diesem MSDN-Artikel auf Styling and Templating

erstellen oder eine Vorlage für ein MenuItem Modifikation kann leicht in Expression Blend erfolgen, siehe in diesem MSDN-Artikel Create or modify a template

Die Standardeinstellung für den Ort der Das Untermenü MenuItem befindet sich auf der rechten Seite des Stamm-MenuItems mit Ausnahme des TopLevelHeader-Menüelements, dessen Sub-MenuItems ein Dropdown-Menü sind. Wenn Sie festlegen möchten, dass sich das TopLevelHeader MenuItem ebenfalls auf der rechten Seite befindet, müssen Sie lediglich eine neue Vorlage des standardmäßigen MenuItem erstellen und die Einstellung für das TopLevelHeader MenuItem ändern. In Blend müssen Sie nur die "ResourceId" als "SubmenuHeaderTemplateKey" im Abschnitt des XAML-Codes für die Vorlage ändern.

<Trigger Property="Role" Value="TopLevelHeader"> 
       <Setter Property="Padding" Value="7,2,8,3"/> 
       <Setter Property="Template" Value="{DynamicResource {ComponentResourceKey ResourceId=TopLevelHeaderTemplateKey, TypeInTargetAssembly={x:Type MenuItem}}}"/> 
    </Trigger> 
Verwandte Themen