仅使用XAML在按钮上使用IsMouseOver时显示ContextMenu [英] Bring up ContextMenu when IsMouseOver on a Button using only XAML
本文介绍了仅使用XAML在按钮上使用IsMouseOver时显示ContextMenu的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用XAML(仅,没有代码隐藏)来调出按钮的ContextMenu。
I am trying to use XAML (only, no codebehind) to bring up the ContextMenu of a button.
我的按钮在这里
<Button x:Name="btn" Style="{StaticResource mybutton}" >
<Button.ContextMenu>
<ContextMenu>
<TextBlock Text="Information"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
此处按钮的样式
<Style TargetType="{x:Type Button}" x:Key="mybutton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="ContextMenu.IsOpen" Value="True"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我的google-fu让我失望,因为它似乎是一个简单的解决方案。我真的很想避免使用代码隐藏(MouseEnter / MouseLeave事件)。
My google-fu is failing me for what seems like an easy solution. I really would prefer to avoid using codebehind (MouseEnter/MouseLeave events).
预先感谢您。
推荐答案
通过在 TargetName属性中提供它的名称,尝试为ControlTemplate中的ContextMenu应用 Setter。例如:
Try to apply "Setter" for a ContextMenu within the ControlTemplate, by providing it's name in the "TargetName" property. For example:
<Button Width="100" Height="100" x:Name="btn">
<Button.Style>
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border CornerRadius="2" BorderThickness="3" BorderBrush="DarkGray" x:Name="border">
<Border.ContextMenu>
<ContextMenu x:Name="cmenu">
<TextBlock>Information</TextBlock>
</ContextMenu>
</Border.ContextMenu>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="ContextMenu.IsOpen" Value="True" TargetName="cmenu"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Button.Style>
这篇关于仅使用XAML在按钮上使用IsMouseOver时显示ContextMenu的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文