Ich habe einen einfachen Weg gefunden, um die ContextMenu-Vorlage in Blend zu erhalten:
- Ich habe ein ContextMenu zu einer Schaltfläche mit einigen Menüpunkten hinzugefügt.
- Unter "Verschiedenes" im Eigenschaftsfenster gibt es ein gruppiertes Element für ContextMenu.
- Öffnen Sie dies. Hier finden Sie die üblichen Eigenschaften von Stil und Vorlage.
- Klicken Sie auf das Quadrat für das Popup-Menü, und wählen Sie In neue Ressource konvertieren...
Das war's. Wählen Sie aus, wo die Vorlage/der Stil eingefügt werden soll, und schon sind Sie fertig.
Hier ist der Aufschlag, den ich hatte:
<StackPanel x:Name="LayoutRoot">
<Button Content="Click for ContextMenu" Width="30" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button.ContextMenu>
<ContextMenu Template="{DynamicResource ContextMenuControlTemplate1}" Style="{DynamicResource ContextMenuStyle1}">
<MenuItem Header="File"/>
<MenuItem Header="Edit"/>
<MenuItem Header="View"/>
<MenuItem Header="Recent Files"/>
<MenuItem Header="file1.txt"/>
<MenuItem Header="file2.txt"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
</StackPanel>
Und der Stil/die Vorlage, die ich bekommen habe:
<Style x:Key="ContextMenuStyle1" TargetType="{x:Type ContextMenu}">
<Setter Property="Background" Value="{DynamicResource MenuBackgroundBrush}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="{DynamicResource WindowBorderBrush}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ContextMenu}">
<Border Uid="Border_93">
<Border.Style>
<Style TargetType="{x:Type Border}">
<Setter Property="Tag" Value="{DynamicResource {x:Static SystemParameters.DropShadowKey}}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Tag, RelativeSource={RelativeSource Self}}" Value="True">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Padding" Value="0,0,5,5"/>
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect BlurRadius="4" Opacity="0.8" ShadowDepth="1"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Ich hoffe, das hilft. In gewohnter MS-Gründlichkeit werden die Pinsel im Standardstil nicht gefunden :)
0 Stimmen
Luke, haben Sie dieses Problem gelöst? Ich bin ein wenig verwirrt von all diesen verschiedenen Ideen unten. Danke für jeden Hinweis!
0 Stimmen
Ja, ich habe die unten stehende Antwort verwendet, um die Vorlage zu erhalten, und sie von dort aus geändert.