gpt4 book ai didi

WPF ListViewItem.IsMouseOver 不会为整行返回 True

转载 作者:行者123 更新时间:2023-12-03 11:02:08 25 4
gpt4 key购买 nike

我有一个简单的 WPF ListView,其中定义了两列。默认情况下,当您将鼠标移到一行的任何部分时,它将以跟踪外观显示该行(我使用的是带有 Aero 的 Windows 7)。这是一个简单示例的 Xaml,显示了它按预期工作...

  <Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Grid>
<ListView>
<ListView.View>
<GridView>
<GridViewColumn Header="First" Width="200"/>
<GridViewColumn Header="Second" Width="200"/>
</GridView>
</ListView.View>
<sys:DateTime>1/2/3</sys:DateTime>
<sys:DateTime>4/5/6</sys:DateTime>
<sys:DateTime>7/8/9</sys:DateTime>
<sys:DateTime>10/11/12</sys:DateTime>
</ListView>
</Grid>
</Page>

我想覆盖 ListViewItem 样式并在跟踪时自定义行的外观。这是我添加到上面 ListView...

的示例 Xaml
  <ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border x:Name="Bd">
<GridViewRowPresenter />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Bd" Property="Background" Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>

只有当鼠标直接位于两列之一内的文本上方时,它才会将该行显示为跟踪。如果鼠标位于绘制的文本之间或超出最后一列的右侧,则它不会显示为跟踪。

似乎 IsMouseOver 触发器只在鼠标下方有实际内容时才返回 True,当我希望它在鼠标位于行的任何部分上方时返回 True,即使该区域该行恰好是空的。关于如何解决这个问题的任何想法?

最佳答案

将边框 Horizo​​ntalAlignment 设置为 Stretch 并为其提供透明(或默认)背景。这将使鼠标悬停以突出显示

关于WPF ListViewItem.IsMouseOver 不会为整行返回 True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7006323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com