c# - 具有 WPF ListView 的 MouseOver 大纲

标签 c# .net wpf listview

我使用的是 Windows 7,当前项目选择(默认情况下)是用矢车菊蓝色绘制背景。是否有可能摆脱它并用鼠标悬停的 ListView 项目上的 1px 轮廓/边框替换它?

我基本上想在任何 ListView 项上绘制一个 1 像素的轮廓/边框, ListView 项和轮廓/边框之间的间距为 1 像素。

我正在为每个项目使用带有图像的 WrapPanel。

最佳答案

使用 ItemContainerStyle 覆盖默认背景行为,并在您的样式中使用 IsMouseOver 上的触发器来显示您的轮廓(例如,通过为 BorderThickness 使用 Setter)。

编辑:粗略示例(未测试):

<ListBox.ItemContainerStyle>
  <Style TargetType="ListBoxItem">
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate>
          <Border Background="White" BorderThickness="5" Name="Bd">
            <Border.Style>
              <Style TargetType="Border">
                 <Setter Property="BorderBrush" Value="White" />
              </Style>
            </Border.Style>
            <ContentPresenter />
          </Border>
          <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
              <Setter TargetName="Bd" Property="BorderBrush" Value="HotPink" />
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
</ListBox.ItemContainerStyle>

关于c# - 具有 WPF ListView 的 MouseOver 大纲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2573946/

相关文章:

c# - 如何只显示一个结果表,即从对象数组列表绑定(bind)到数据网格的结果?

c# - 如果 bool 变量为真,则禁用按钮

c# - 遍历对象的层次结构 - C# - linq

c# - 将 SQL DB 部署到 Azure 超时启用索引

wpf - 防止未处理的异常停止应用程序

c# - 如何在 C# 中检查给定点位于两条非线性线之间?

c# - 在没有 Win32 API 调用的情况下将省略号添加到 WinForms 程序中的路径(重新访问)

.net - 使用参数信息记录 WCF 服务调用

wpf - Caliburn.Micro 的 WindowManager.ShowPopup 及设置

c# - 如何从 View 模型访问不可绑定(bind)的 View 属性?