如何在WPF中鼠标悬停时显示按钮控件?

时间:2011-12-20 21:50:38

标签: 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>         
        <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>

1 个答案:

答案 0 :(得分:1)

定义一个ControlTemplate,边框内有透明背景+隐形按钮。然后在鼠标悬停在边框上,您可以将按钮的可见性设置为Visible。

MSDN对可见性方面表示了一些兴趣: 可见性不可见的元素不参与输入事件(或命令),不影响布局的测量或排列过程,不在标签序列中,也不会在命中测试中报告。

这解释了你注意到的行为。

然后,如果您编写ControlTemplate,则点击后按钮不会再次隐藏 可能是因为它有焦点:它会让人觉得有针对性的元素不能 被设置为隐形。我会尝试在点击处理程序中使其松散焦点(专注于smthg else)。