Skip to main content
 首页 » 编程设计

wpf之WPF列表框在MouseOver上的ItemTemplate中显示按钮

2024年09月03日18lidabo

我有一个包含和图像和按钮的列表框。默认情况下,该按钮是隐藏的。我想将鼠标悬停在列表框中的某个项目上时使按钮可见。
我正在使用的XAML如下。谢谢

<Window.Resources> 
        <Style TargetType="{x:Type ListBox}"> 
    <Setter Property="ItemTemplate"> 
                    <Setter.Value> 
                        <DataTemplate> 
                            <Border BorderBrush="Black" BorderThickness="1" Margin="6"> 
                                <StackPanel Orientation="Horizontal"> 
                                    <Image Source="{Binding Path=FullPath}" Height="150" Width="150"/> 
                                    <Button x:Name="sideButton" Width="20" Visibility="Hidden"/> 
                                </StackPanel> 
                            </Border> 
                        </DataTemplate> 
                    </Setter.Value> 
                </Setter> 
        </Style> 
    </Window.Resources> 

请您参考如下方法:

好的,在您的按钮声明中尝试以下操作:

<Button x:Name="sideButton" Width="20"> 
    <Button.Style> 
        <Style TargetType="{x:Type Button}"> 
            <Setter Property="Visibility" Value="Hidden" /> 
            <Style.Triggers> 
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsMouseOver}" Value="True"> 
                    <Setter Property="Visibility" Value="Visible" /> 
                </DataTrigger> 
            </Style.Triggers> 
        </Style> 
    </Button.Style> 
</Button> 

因此,我使用带有触发器的样式来备份可视树,直到找到 ListBoxItem,并且当其 IsMouseOver属性翻转为 True时,将 button的可见性设置为 Visible

看看它是否接近您想要的。