Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有WPF ListView鼠标悬停的轮廓_C#_.net_Wpf_Listview - Fatal编程技术网

C# 具有WPF ListView鼠标悬停的轮廓

C# 具有WPF ListView鼠标悬停的轮廓,c#,.net,wpf,listview,C#,.net,Wpf,Listview,我使用的是Windows7,默认情况下当前的项目选择是用矢车菊蓝绘制背景。有没有可能在鼠标所在的listview项上用1px的轮廓/边框来代替它 我基本上希望在任何listview项上绘制1px的轮廓/边框,listview项和轮廓/边框之间的间距为1像素 我正在为每个项目使用带有图像的WrapPanel。使用ItemContainerStyle覆盖默认的背景行为,并且在您的样式中,使用IsMouseOver上的触发器显示您的轮廓,例如通过设置边框厚度 编辑:未测试的粗略示例: <List

我使用的是Windows7,默认情况下当前的项目选择是用矢车菊蓝绘制背景。有没有可能在鼠标所在的listview项上用1px的轮廓/边框来代替它

我基本上希望在任何listview项上绘制1px的轮廓/边框,listview项和轮廓/边框之间的间距为1像素


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

使用ItemContainerStyle覆盖默认的背景行为,并且在您的样式中,使用IsMouseOver上的触发器显示您的轮廓,例如通过设置边框厚度

编辑:未测试的粗略示例:

<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>

使用ItemContainerStyle来覆盖默认的背景行为,并且在您的样式中,使用IsMouseOver上的触发器来显示您的轮廓,例如通过使用边界厚度设置器

编辑:未测试的粗略示例:

<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>

谢谢我对WPF很陌生。你能给我看一个小样品吗?或者是一个链接?添加了一个粗略的示例。您可能需要进行一些实验,以获得您想要的确切效果,但希望这将使您走上正确的道路。谢谢,我用ListView替换了ListBox,但它在编译之前表示类型Setter不支持直接内容。它概述了ControlTemplate中的所有内容。抱歉,忘记了Setter.Value元素。谢谢。我对WPF很陌生。你能给我看一个小样品吗?或者是一个链接?添加了一个粗略的示例。您可能需要进行一些实验,以获得您想要的确切效果,但希望这将使您走上正确的道路。谢谢,我用ListView替换了ListBox,但它在编译之前表示类型Setter不支持直接内容。它概述了ControlTemplate中的所有内容。抱歉,忘记了Setter.Value元素。更新。