如何在ListBox中禁用选择?
发布于 2009-09-09 09:46:45
方法1- ItemsControl
除非需要ListBox
的其他方面,否则可以改用ItemsControl
。它将项目放在ItemsPanel
中,并且没有选择的概念。
<ItemsControl ItemsSource="{Binding MyItems}" />
默认情况下,ItemsControl
不支持其子元素的虚拟化。如果您有很多项,虚拟化可以减少内存使用并提高性能,在这种情况下,您可以使用方法2并设置ListBox
或add virtualisation to your 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>
发布于 2012-01-17 19:57:12
我发现一个非常简单直接的解决方案对我有效,我希望它也能对你起作用。
<ListBox ItemsSource="{Items}">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Focusable" Value="False"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
发布于 2009-09-09 09:52:21
您可以切换到使用ItemsControl
而不是ListBox
。ItemsControl
没有选择的概念,所以没有什么可以关闭的。
https://stackoverflow.com/questions/1398559
复制相似问题