【发布时间】:2015-03-16 20:06:01
【问题描述】:
有没有办法让 DataGrid 的列处于只读模式但插入符号可见?使用 IsReadOnlyCaretVisible 属性时类似于文本框? 如果设置 IsReadOnly 属性,则 Column 将被禁用,并且无法单击单元格。
<DataGrid ItemsSource="{Binding Customers}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}"></DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Income}" IsReadOnly="True"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
【问题讨论】:
-
也许你可以修改它的模板来实现一些东西,但我不确定这种方式。我现在唯一的解决方案是避免设置
IsReadOnly属性并简单地阻止任何输入(来自键盘和剪贴板)。 -
@EugenePodskal 我有一个从 DataGridTextColumn 继承的自定义列,我没有设置列的 IsReadOnly 属性,我设置了内部文本框的 IsReadOnly 和 IsReadOnlyCaretVisible,但是有些情况像当您复制和粘贴时,或者当您选择列并按一个成功更改内容的数字时。我不知道还有什么要更改或需要拦截的事件以防止这种情况发生。
-
哦,我在阅读问题时有点不专心。在这种情况下,您可以尝试已作为答案发布的基于模板的解决方案。
-
@EugenePodskal 是的,这很简单,不过我只需要重新考虑我的自定义列,以使用 Ganesh 解决方案。
-
正如我在之前的评论中已经告诉你的那样——“你可以尝试已经发布的基于模板的解决方案作为答案”。很抱歉,当我浏览问题文本时首先误导了您。