如何在WPF中使鼠标上方的按钮控件可见?
我有一个要求,在窗口中,我的按钮控件是不可见的,但是当用户不小心将鼠标悬停在该区域时,按钮就会可见。有点像复活节彩蛋。下面是我的XAML代码,但它似乎不起作用如何在WPF中使鼠标上方的按钮控件可见?,wpf,xaml,visual-studio-2008,user-controls,Wpf,Xaml,Visual Studio 2008,User Controls,我有一个要求,在窗口中,我的按钮控件是不可见的,但是当用户不小心将鼠标悬停在该区域时,按钮就会可见。有点像复活节彩蛋。下面是我的XAML代码,但它似乎不起作用 <Button Margin="0,0,20,0" Grid.Row="3" HorizontalAlignment="Right" Name="CopyText" Width="75" Height="25"> <Button.Style> <St
<Button Margin="0,0,20,0" Grid.Row="3" HorizontalAlignment="Right"
Name="CopyText" Width="75" Height="25">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Visibility" Value="Hidden" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Visibility" Value="Visible" />
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
定义一个
控制模板
,其边框为透明背景+内有不可见按钮。然后将鼠标悬停在边框上,可以将按钮的可见性设置为可见
MSDN介绍了有关可见性的一些有趣的事情:
可见性不可见的元素不参与输入事件(或命令),不影响布局的测量或排列过程,不在选项卡序列中,并且不会在命中测试中报告
这就解释了你注意到的行为
如果您编写了控制模板
,则单击后按钮不会再次隐藏
可能是因为它有焦点:这在某种意义上讲,焦点元素不能
设置为不可见。我会尝试在click handler中释放焦点(焦点在smthg else上)。将默认可见性设置为true时,您会看到按钮吗?是的,在这种情况下我会看到按钮。您会在属性窗口中看到MouseEnter属性吗?我一直都是这么做的,我试过这么做。但是按钮在点击后不会再次变透明,除非我点击了其他地方。尝试添加另一个触发器,其中IsMouseOver为false?我相信IsMouseOver更像是一个事件,而不是一个普通属性。事实上,同样的问题(:-):当IsMouseOver为true和IsMouseOver为false时,您是否同时设置了触发器?