在StackPanel WPF中使用MouseOver

Bha*_*thi 1 c# wpf mvvm wpf-controls

我刚刚开始学习WPF并尝试隐藏StackPanel期间MouseOver。下面是我使用的代码。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>  
Run Code Online (Sandbox Code Playgroud)

Stackpanel:

<StackPanel Style="{StaticResource myStyle}">

// Child controls

</StackPanel>
Run Code Online (Sandbox Code Playgroud)

Cle*_*ens 5

隐藏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>
Run Code Online (Sandbox Code Playgroud)

或者,如另一个答案所指出的,仅声明一个触发器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>
Run Code Online (Sandbox Code Playgroud)