首页 > 解决方案 > WPF - 将鼠标悬停在另一个元素上时隐藏元素

问题描述

网格中有一些元素,我想要的只是当鼠标悬停在矩形上时显示/隐藏按钮。

<UserControl ...>
    <Grid>
        <Rectangle ...>
        <Button ...>
    </Grid>
</UserControl>

我已经尝试了几个触发器,但到目前为止都没有成功。请帮忙。

标签: wpfxamltriggers

解决方案


这就是您需要的:绑定到应该触发隐藏的控件的数据触发器。或者你可以使用一个转换器BoolenToInvisibilityConverter

Ps 如果你想反转你需要在样式中设置可见性的逻辑,否则它会被覆盖

            <StackPanel>
                <Rectangle Fill="Red" Height="20" Width="29" Name="MyRect"/>
                <Button>
                    <Button.Style>
                        <Style TargetType="Button">
                        <!--<Setter Property="Visibility" Value="Hidden"/>-->
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding ElementName=MyRect, Path=IsMouseOver}" Value="True">
                                    <Setter Property="Visibility" Value="Hidden" />
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Button.Style>                    
                </Button>
            </StackPanel>

Wpf 中的 trigger-landscape 有时会令人困惑,不要担心你会学会接受它!


推荐阅读