c# - 如何阻止用户在不禁用列表框中选择项目

标签 c# wpf xaml listbox

我需要做一些事情,在 WPF 中列出一些东西,但我不希望用户单击列表,列表框没有禁用选择的属性。您可以禁用该控件,但这不是我需要的,因为它会扰乱样式并使文本难以阅读。我的意思是有这样的东西:

<ListBox IsEnabled="{Binding IsValid}" ...> ... </ListBox>

我想知道是否有类似的东西:

<ListBox Selection="Disabled" ...> ... </ListBox>

或者如果存在不同于列表框的列出项目的替代方法

问题是,有没有办法在 WPF 中列出内容并且用户不能选择这些项目?

最佳答案

使用ItemsControl代替 ListBox。 ItemsControl 是一个 lookless control .

但是ItemsControl 不支持(默认情况下)虚拟化,您必须进行一些更改以支持虚拟化(以防万一)。

如果你想在这里支持虚拟化,请引用这个 - Virtualizing an ItemsControl.


您可以设置IsHitTestVisible ListBoxItem 上的 false 不允许任何鼠标输入。您可以使用 ItemContainerStyle 设置它。

    <ListBox>
        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Setter Property="IsHitTestVisible" Value="False"/>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>

关于c# - 如何阻止用户在不禁用列表框中选择项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20957029/

相关文章:

c# - 工具提示的样式化文本 block 绑定(bind)改为绑定(bind)到控件模板

c# - 调用目标抛出异常? Xamarin 表格

c# - WPF 自定义框架元素/IScrollInfo

c# - 选择美观的随机颜色

c# - vb/c#十进制内部格式

c# - 有没有办法获取常用对话框按钮的本地化名称?

c# - 如何通过FindWindow api调用C#开发的window

c# - 使用 Vector2 和 Vector2 作为通用约束?

wpf - 带有 MVVM 的 WPF 中的 COMBOBOX 过滤

c# - 如何使用样式和 DataTrigger 绑定(bind)到 XAML 中的项目源计数?