【问题标题】:How to prevent a combobox from selecting an item from its list in wpf?如何防止组合框从 wpf 的列表中选择项目?
【发布时间】:2017-06-27 02:08:40
【问题描述】:

这个组合框应该显示一个绑定值作为它的文本,并且不能被禁用。 我只是想阻止用户更改显示的值。

【问题讨论】:

    标签: wpf combobox


    【解决方案1】:
    组合框名称.IsHitTestVisible = false; 组合框名称.Focusable = false;

    将这两个行代码一起使用。

    编辑说明:编辑以解决skypecakes描述的问题

    【讨论】:

    • 这没什么用。您仍然可以使用 Tab 键切换到它并使用箭头键更改值,然后使用 F4 下拉列表。
    • comboBoxName.IsHitTestVisible = false; comboBoxName.Focusable = false; 将这两行代码一起使用。第二行将阻止您使用标签。
    • @Peter 这应该是公认的答案。它是唯一一个在不禁用(改变外观)的情况下做我们想做的事。完成此操作的唯一其他方法是提取和修改模板,最好避免这样做,实际上没有必要设置这些属性。
    【解决方案2】:

    根据 MSDN 你需要

    IsReadOnly = true;
    IsEditable = false;
    

    参见备注下的http://msdn.microsoft.com/en-us/library/system.windows.controls.combobox.isreadonly.aspx

    编辑:实际上,我不确定了

    我建议在 PART_EditableTextBox 上使用一种样式将 ReadOnly 设置为 true

    【讨论】:

      【解决方案3】:

      试一试 XAML

      IsEnabled="False"
      

      C#

      YOUCOMBOBOX.IsEnabled=false;
      

      【讨论】:

        【解决方案4】:

        如果您设置 IsEnabled = false 这应该可以工作。在您的 XAML 中,它看起来像这样

        <ComboBox IsEnabled="False"></ComboBox>

        【讨论】:

        • 我不想要它(或者更好地不想要它,不再做 wpf :))禁用。我只希望它是只读的
        【解决方案5】:

        你的问题不清楚。

        组合框具有依赖属性 IsEditable,如果设置为 false,则无法编辑所选项目。默认为 false。

        如果您正在谈论组合框弹出列表中的项目,那么它也应该是“不可编辑的”,除非您已将组合框的数据模板更改为包含文本框列表,这将导致列表允许每个项目可编辑。

        【讨论】:

        • 即使 IsEditable 设置为 false,您也可以更改选择。我希望该值是只读的。
        • 将只读设置为 True
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多