WPF - 访问MouseOver上显示的控件

时间:2016-05-13 12:53:52

标签: wpf xaml triggers

这可能是微不足道的。不确定,我很惊讶我无法找到解决方案。在我的周末开始时,我现​​在可能不在乎:P。

目标:在TreeView中,每个项目都有CheckBoxContent。此外,还有一个选项可以删除仅在TreeViewItem项目上显示的MouseOver

问题是指我将鼠标悬停在项目上时会触发显示Visibility的{​​{1}}。现在,当我尝试将鼠标移到要删除的Button时,它现在ButtonHidden IsMouseHover

以下是样本:

false

我需要访问 <TreeView Grid.Column="2" Name="trvMenu" HorizontalAlignment="Stretch" Margin="20" MaxHeight="200" ScrollViewer.VerticalScrollBarVisibility="Auto"> <TreeView.ItemTemplate> <HierarchicalDataTemplate DataType="{x:Type local:TestPlan}" ItemsSource="{Binding Plans}"> <StackPanel Orientation="Horizontal"> <CheckBox Margin="5"/> <TextBlock Text="{Binding Title}" Margin="5"/> <Button Height="20" Width="20" x:Name="deletebutton" Margin="5" Visibility="Collapsed"> <Image Source="/Images/cross.png" Height="20"/> </Button> </StackPanel> <HierarchicalDataTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="deletebutton" Property="Visibility" Value="Visible" /> </Trigger> </HierarchicalDataTemplate.Triggers> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView>

上的Button

有没有简单的方法可以解决这个问题?

1 个答案:

答案 0 :(得分:4)

由于IsMouseOver因为TextBox没有{{1},我猜测ButtonMargin之间的StackPanel丢失了}}

(如果BackgroundBackground,则会影响HitTestResult)

null

如果这还不够,请删除<StackPanel Background="Transparent" Orientation="Horizontal"> ,删除按钮上显式设置的HierarchicalDataTemplate.Triggers并使用类似的内容(样式设置器不能覆盖在某些条件下在XAML中设置的值):

Visibility