如何在WPF中选择列表中的项目时显示焦点矩形

时间:2012-06-29 05:56:17

标签: wpf xaml user-controls styles

我想在选中时显示项目的焦点矩形。

因为IsFocusedProperty是只读的,所以我无法使用XAML。

如何显示聚焦矩形......

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

焦点矩形是键盘焦点的一部分,当用户使用键盘将焦点设置为Input元素时显示。我测试了手动设置键盘焦点(使用Keyboard.Focus()),但它似乎不起作用。

所以我建议创建一个自定义样式,在选择ListBoxItem时模拟焦点rect。我想出了下面似乎有用的风格。它匹配焦点rect的破折号数组,以便在显示真实焦点rect时看起来不奇怪。

<ControlTemplate TargetType="{x:Type ListBoxItem}">
  <Grid>
    <Border Background="{TemplateBinding Background}">
      <ContentPresenter Margin="{TemplateBinding Padding}"/>
    </Border>
  </Grid>
  <ControlTemplate.Triggers>
    <Trigger Property="IsSelected" Value="True">
      <Setter Property="Background" Value="Green"/>
      <Setter Property="Foreground" Value="White"/>
    </Trigger>
  </ControlTemplate.Triggers>
</ControlTemplate>

这也使您可以更好地控制ListBoxItem的显示方式。您也可以轻松地将其调整为其他列表类型(ListViewItem等)