Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在WPF中使鼠标上方的按钮控件可见?_Wpf_Xaml_Visual Studio 2008_User Controls - Fatal编程技术网

如何在WPF中使鼠标上方的按钮控件可见?

如何在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

我有一个要求,在窗口中,我的按钮控件是不可见的,但是当用户不小心将鼠标悬停在该区域时,按钮就会可见。有点像复活节彩蛋。下面是我的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>

定义一个
控制模板
,其边框为透明背景+内有不可见按钮。然后将鼠标悬停在边框上,可以将按钮的可见性设置为可见

MSDN介绍了有关可见性的一些有趣的事情: 可见性不可见的元素不参与输入事件(或命令),不影响布局的测量或排列过程,不在选项卡序列中,并且不会在命中测试中报告

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

如果您编写了
控制模板
,则单击后按钮不会再次隐藏 可能是因为它有焦点:这在某种意义上讲,焦点元素不能
设置为不可见。我会尝试在click handler中释放焦点(焦点在smthg else上)。

将默认可见性设置为true时,您会看到按钮吗?是的,在这种情况下我会看到按钮。您会在属性窗口中看到MouseEnter属性吗?我一直都是这么做的,我试过这么做。但是按钮在点击后不会再次变透明,除非我点击了其他地方。尝试添加另一个触发器,其中IsMouseOver为false?我相信IsMouseOver更像是一个事件,而不是一个普通属性。事实上,同样的问题(:-):当IsMouseOver为true和IsMouseOver为false时,您是否同时设置了触发器?