[英]WPF ListBoxItem IsMouseOver
我有一個 ListBox,它在將鼠標懸停在一個項目上時會顯示該項目的刪除按鈕。 問題是 IsMouseOver 會在突出顯示的項目中觸發大約 4 個像素,因此當將鼠標懸停在多個項目上時,刪除按鈕似乎不會隨着您上下移動,而是在項目之間的間隙中閃爍。 有沒有辦法讓 IsMouseOver 響應整個項目?
<ListBox Name="lstLength" ItemsSource="{Binding Source={StaticResource lengths}}">
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel LastChildFill="True" Height="22">
<Button DockPanel.Dock="Right" Name="btnDelete" Content="X" Tag="{Binding}" Click="DeleteLength" Visibility="Collapsed" />
<TextBlock Text="{Binding}" />
</DockPanel>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="btnDelete" Property="Visibility" Value="Visible" />
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
您的每個項目都將包含在ListBoxItem
中,這就是在每個項目之間提供 ~4 像素的原因。 它還提供突出顯示和選擇樣式。 您可以通過ListBox.ItemContainerStyle屬性設置listBoxItem
的樣式。 將觸發器移動到項目容器,它應該可以按需要工作。
您可以直接在按鈕上使用DataTrigger
(或嘗試在它所在的位置應用相同的RelativeSource
綁定):
<Style TargetType="{x:Type Button}">
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType=ListBoxItem}}"
Value="True">
<!-- ... -->
</DataTrigger>
</Style>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.