我有一個項目,我需要在我的WPF應用程序中定製上下文菜單,其中按鈕將放置在所有菜單項的底部。在WPF中自定義上下文菜單
但是,如果我要通過XAML添加按鈕,它將作爲上下文菜單中集合中的另一項顯示,並且鼠標懸停突出顯示將對其起作用。
我想將上下文菜單調整爲網格狀樣式,從而可以自定義其下的樣式。
任何想法如何實現這一點(最好在XAML中)?
我有一個項目,我需要在我的WPF應用程序中定製上下文菜單,其中按鈕將放置在所有菜單項的底部。在WPF中自定義上下文菜單
但是,如果我要通過XAML添加按鈕,它將作爲上下文菜單中集合中的另一項顯示,並且鼠標懸停突出顯示將對其起作用。
我想將上下文菜單調整爲網格狀樣式,從而可以自定義其下的樣式。
任何想法如何實現這一點(最好在XAML中)?
它在XAML中實際上非常簡單。 只需在要爲其創建上下文菜單的元素下定義它即可。
<Border>
<Border.ContextMenu>
<ContextMenu>
<ContextMenu.Template>
<ControlTemplate>
<Grid>
<!--Put anything you want in here.-->
</Grid>
</ControlTemplate>
</ContextMenu.Template>
</ContextMenu>
</Border.ContextMenu>
</Border>
對於你的菜單項的風格與您可以使用下面的代碼項目的按鈕:
注 - 添加項目到Header
將保持在同一MenuItem
,但如果添加到MenuItem
只有它會被視爲新的MenuItem
。
<ContextMenu>
<ContextMenu.Items>
<MenuItem>
<MenuItem.Header>
<StackPanel>
<TextBlock Text="Item 1"/>
<Button Content="Button 1" Margin="5"/>
</StackPanel>
</MenuItem.Header>
</MenuItem>
<MenuItem>
<MenuItem.Header>
<StackPanel>
<TextBlock Text="Item 2"/>
<Button Content="Button 2" Margin="5"/>
</StackPanel>
</MenuItem.Header>
</MenuItem>
</ContextMenu.Items>
</ContextMenu>
這將是導致ContextMenu
:
從那裏,你可以風格的MenuItem
或Button
等
希望它能幫助!
可以與ContextMenu
的例子風格/模板(從here)開始,並調整您的需求。
<Style TargetType="{x:Type ContextMenu}">
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="Grid.IsSharedSizeScope" Value="true" />
<Setter Property="HasDropShadow" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ContextMenu}">
<Border x:Name="Border"
Background="{StaticResource MenuPopupBrush}"
BorderThickness="1">
<Border.BorderBrush>
<SolidColorBrush Color="{StaticResource BorderMediumColor}" />
</Border.BorderBrush>
<StackPanel IsItemsHost="True"
KeyboardNavigation.DirectionalNavigation="Cycle" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="HasDropShadow" Value="true">
<Setter TargetName="Border" Property="Padding" Value="0,3,0,3" />
<Setter TargetName="Border" Property="CornerRadius" Value="4" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
另請參閱https://msdn.microsoft.com/en-us/library/ms747082(v=vs.85).aspx用於設計'MenuItem'的樣式。 – 2016-06-20 20:37:46
太棒了! +1正在尋找此 – VisualBean 2013-11-27 22:19:03
完美工作! :) – 2017-10-09 05:36:06