这可能是微不足道的。不确定,我很惊讶我无法找到解决方案。在我的周末开始时,我现在可能不在乎:P。
目标:在TreeView
中,每个项目都有CheckBox
和Content
。此外,还有一个选项可以删除仅在TreeViewItem
项目上显示的MouseOver
。
问题是指我将鼠标悬停在项目上时会触发显示Visibility
的{{1}}。现在,当我尝试将鼠标移到要删除的Button
时,它现在Button
为Hidden
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
有没有简单的方法可以解决这个问题?
答案 0 :(得分:4)
由于IsMouseOver
因为TextBox
没有{{1},我猜测Button
和Margin
之间的StackPanel
丢失了}}
(如果Background
为Background
,则会影响HitTestResult)
null
如果这还不够,请删除<StackPanel Background="Transparent" Orientation="Horizontal">
,删除按钮上显式设置的HierarchicalDataTemplate.Triggers
并使用类似的内容(样式设置器不能覆盖在某些条件下在XAML中设置的值):
Visibility