WPF - DataGrid中使用自定义CheckBox样式时,IsReadOnly无法正常工作

5
我目前有一个自定义的CheckBox样式,我在DataGrid中使用它。但是,当我在DataGridCheckBoxColumn中指定IsReadOnly="true"属性时,这个样式不再起作用(我仍然可以点击并更改CheckBox的值)。我还使用Expression Blend提取了原始WPF样式的副本,但它也有同样的问题。只有原始的CheckBox样式似乎有效,但我不想使用它。
我目前通过创建一个基于我的常规样式的新样式,并将IsHitTestVisible和Focusable属性设置为false来解决此问题,但我希望DataGridCheckBoxColumn中的IsReadOnly属性能够正常工作,而不需要这种解决方法。
我该如何实现这个结果?

不是一个坏的解决方法。也许可以尝试使用DataGridTemplateColumn。 - paparazzo
谢谢Blam。我尝试了DataGridTemplateColumn并遇到了同样的问题。有人知道IsReadOnly属性改变了什么吗? - The Cookies Dog
2个回答

0
也许这是您的情况:尝试在样式中设置此xaml。
IsReadOnly="{TemplateBinding}"

或者

IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}"

希望这可以帮到你。


谢谢,但复选框没有IsReadOnly属性。还有其他的解决方案吗? - The Cookies Dog
根据 msdn 的文章,IsSealed 属性应该是你真正需要的。 - stukselbax
我知道IsSealed,但是它是内部设置的,根据MSDN上的说明无法修改:获取指示此实例当前是否已封存(只读)的值。 + 此值是在内部设置的。 - The Cookies Dog

0

在 CheckBox 上有一个“IsEnabled”属性(我认为应该在所有其他控件上也有),可以完成这项工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接