繁体   English   中英

在StackPanel WPF中使用MouseOver

[英]using MouseOver in StackPanel WPF

我刚刚开始学习WPF并试图在MouseOver期间隐藏StackPanel 下面是我使用的代码。 当将鼠标放在Panel时,我只能看到Panel闪烁,但是Panel没有完全隐藏。 我在这里想念什么吗? 提前致谢。

             <Style x:Key="myStyle" TargetType="{x:Type StackPanel}">
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="Visibility" Value="Hidden" />
                    </Trigger>
                    <Trigger Property="IsMouseOver" Value="false">
                        <Setter Property="Visibility" Value="Visible" />
                    </Trigger>
                </Style.Triggers>
            </Style>  

Stackpanel:

<StackPanel Style="{StaticResource myStyle}">

// Child controls

</StackPanel>

隐藏StackPanel时, IsMouseOver属性切换为false ,这使StackPanel再次可见。

您可以设置Opacity属性而不是Visibility

<Style x:Key="myStyle" TargetType="{x:Type StackPanel}">
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Opacity" Value="0" />
        </Trigger>
        <Trigger Property="IsMouseOver" Value="False">
            <Setter Property="Opacity" Value="1" />
        </Trigger>
    </Style.Triggers>
</Style>

或者,如另一个答案中所指出的,仅为IsMouseOver == true声明一个触发器:

<Style x:Key="myStyle" TargetType="{x:Type StackPanel}">
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Opacity" Value="0" />
        </Trigger>
    </Style.Triggers>
</Style>

Clemens已经回答了您的问题,但是仅当您在布尔值上触发时,您无需为这两种状态触发。 只需将单个触发器设置为truefalse状态,然后当该状态不再应用时,触发器中的设置器更改的属性将恢复为之前的值。 这将减少您需要编写的XAML数量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM