有没有办法阻止wpf组合框在选择更改后更改其文本?我有一个源自组合框的自定义控件,我希望能够在选择更改后手动设置文本,另外我无法阻止调用base.OnSelectionChanged(这样做但它必须留在那里作为一部分的要求)
答案 0 :(得分:1)
通常,ComboBox的IsEditable
和IsReadOnly
属性用于控制用户可以编辑或选择ComboBox的显示文本的级别。
在msdn combobox(部分备注)中,您可以阅读相关内容。
答案 1 :(得分:0)
我有一个类似的问题需要解决,这就是我的做法:
如果您希望此项目以与其他项目相同的方式显示,即使已禁用,也请设计您的ItemTemplate。
SelectedIndex
设置为0。编辑2:尝试将网格的IsHitTestVisible设置为False,并将CheckBoxes设置为True。
编辑1:如果第一个解决方案不起作用:那么核心问题是,当您单击某行而不是CheckBox时,它会触发SelectionChange。您需要做的是处理隧道左键单击事件:将一个处理程序(在xaml中比在代码中更简单)添加到PreviewMouseLeftButtonDown,并在处理程序中获取MouseButtonEventArgs的OriginalSource。首先通过检查原始源或其可视父对象是否是第二个CheckBoxItem来检查我们是CheckBox的第二选择(索引:1)。如果不然后返回。现在,如果OriginalSource是CheckBox或者是可视父级,则CheckBox不执行任何操作,否则将事件标记为已处理。
注意:您必须使用VisualTreeHelper.GetParent并编写一个子,用于检查Dependency对象或其父对象是否属于给定类型。 (最顶层的父节点是Window,Nothing / Null为父节点。)如果找到则该子节点将返回正确的类型对象,如果未找到则返回Noting / Null。