首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >没有ListBox.SelectionMode="None",有没有其他方法来禁用列表框中的选择?

没有ListBox.SelectionMode="None",有没有其他方法来禁用列表框中的选择?
EN

Stack Overflow用户
提问于 2009-09-09 09:32:34
回答 13查看 92.9K关注 0票数 197

如何在ListBox中禁用选择?

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2009-09-09 09:46:45

方法1- ItemsControl

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

代码语言:javascript
复制
<ItemsControl ItemsSource="{Binding MyItems}" />

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

方法2-样式化ListBox

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

代码语言:javascript
复制
<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>
票数 281
EN

Stack Overflow用户

发布于 2012-01-17 19:57:12

我发现一个非常简单直接的解决方案对我有效,我希望它也能对你起作用。

代码语言:javascript
复制
<ListBox ItemsSource="{Items}">
    <ListBox.ItemContainerStyle>
       <Style TargetType="{x:Type ListBoxItem}">
           <Setter Property="Focusable" Value="False"/>
       </Style>
    </ListBox.ItemContainerStyle>
</ListBox>
票数 167
EN

Stack Overflow用户

发布于 2009-09-09 09:52:21

您可以切换到使用ItemsControl而不是ListBoxItemsControl没有选择的概念,所以没有什么可以关闭的。

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1398559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档