小编典典

没有 ListBox.SelectionMode="None",是否有另一种方法可以禁用列表框中的选择?

all

如何禁用列表框中的选择?


阅读 69

收藏
2022-07-04

共1个答案

小编典典

方法 1 -ItemsControl

除非您需要 的其他方面,否则您ListBox可以ItemsControl改用。它将项目放置在其中ItemsPanel并且没有选择的概念。

<ItemsControl ItemsSource="{Binding MyItems}" />

默认情况下,ItemsControl不支持其子元素的虚拟化。如果您有很多项目,虚拟化可以减少内存使用并提高性能,在这种情况下,您可以使用方法2ListBox并设置ItemsControl

方法 2 - 造型ListBox

或者,只需设置 ListBox 的样式,使选择不可见。

<ListBox.Resources>
  <Style TargetType="ListBoxItem">
    <Style.Resources>
      <!-- SelectedItem with focus -->
      <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
                       Color="Transparent" />
      <!-- SelectedItem without focus -->
      <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
                       Color="Transparent" />
      <!-- SelectedItem text foreground -->
      <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}"
                       Color="Black" />
    </Style.Resources>
    <Setter Property="FocusVisualStyle" Value="{x:Null}" />
  </Style>
</ListBox.Resources>
2022-07-04