我有一个C#WPF Datagrid,带有复选框列,超链接列和文本列。 我的DataGrid绑定到一个DataTable。这些列不是自动生成的,但是我会动态地在代码中创建它们,因为列的数量并不是事先知道的。 我想启用单元格中的文本来选择(为ctrl + c的目的),但禁用编辑。我不希望文字被改变。 任何人都可以提供帮助吗?WPF datagrid - 启用选择,禁用文本输入
3
A
回答
7
一种可能性是可能会使用DataGridTemplateColumn:
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox IsReadOnly="True" Text="{Binding YourProperty,Mode=OneWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
这也适用于复选框,添加一个复选框,其绑定和器isChecked的内容使用设置为IsReadOnly一个TextBox。
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding YourBooleanValue}">
<TextBox IsReadOnly="True" Text="YourCopyableTextOrABindingToText"/>
</CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
如果您希望复选框为只读,请将其Enabled属性设置为false。但是在这种情况下,你必须声明TextBox不是作为子对象,而是作为CheckBox的一个兄弟(使用一个网格或一个StackPanel)。
如果你想使数据只读整个数据网格,使用方法:
<DataGrid IsReadOnly="True">
这也可能列:
<DataGridTextColumn IsReadOnly="True">
如果要定义每行吧,你有使用DataGridTemplateColumn
s并绑定编辑控件的IsReadOnly-proeprty。
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox IsReadOnly="{Binind YourReadOnlyProperty}" Text="{Binding YourProperty,Mode=OneWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
-1
我相当肯定,如果你设置了DataGridTextBoxColumn的IsReadOnly属性为true,您仍然可以选择和复制内容。
+0
不幸的是,这是不正确的。 – Kugel 2011-08-10 16:59:50
2
如果您的用户通常一次可以设置DataGrid的SelectionUnit
到细胞
如果他们复制细胞的部分,你最好覆盖CellTemplate显示标签为HCL推荐
复制整个小区相关问题
- 1. 启用输入选择,但禁用文本输入
- 2. 在文本输入中禁用选择
- 3. WPF DataGrid:禁用多列选择
- 4. WPF DataGrid - 禁用时保留选择
- 5. WPF的DataGrid禁用小区接收文本输入
- 6. WPF Datagrid TemplateColumn控件启用和禁用
- 7. JavaScript:根据从“选择输入”中选择的值启用/禁用“文本输入”
- 8. 当用户选择选项时禁用文本输入
- 9. Wpf Datagrid文本框行选择
- 10. “:输入”不选择禁用的输入
- 11. 选择行禁用/重新启用文本选择
- 12. wpf datagrid:禁用datagridtemplatecolumn
- 13. DataGrid禁用行wpf
- 14. JS复选框启用/禁用输入
- 15. WPF数据网格选择禁用
- 16. 启用和禁用复选框文本输入选中和未选中
- 17. 除非选择了选择器选项,否则禁用文本输入
- 18. 启用所有禁用输入和选择元素
- 19. 文本选择禁用
- 20. 禁用文本选择UITextView
- 21. 的复选框选择启用/禁用文本字段ExtJS的
- 22. 禁用/启用选择
- 23. 禁用除输入以外的文本选择
- 24. 禁用选择richtextbox wpf
- 25. h:输入文字启用/禁用类
- 26. 角:禁用文本输入
- 27. 如何禁用DataGrid WPF中的列选择?
- 28. WPF Datagrid取消选择控制禁用时的行
- 29. 访问输入文本框,只有选择启用允许searchs
- 30. 如何在输入字段上重新启用文本选择
我的DataGrid绑定到一个DataTable,我创建了DataTable和代码中的列,因为只有在运行时才知道列数。有没有办法以这种方式定义新的datagridtemplatecolumns,但动态? – Yoni 2011-04-30 01:04:31
@Yoni:一种可能性是使用XamlReader来动态构建DataGridTemplateColumns(通过字符串连接),然后将它们添加到列集合中。它看起来不是很好,但我记得我已经在类似的情况下也这样做了,它工作正常:http://msdn.microsoft.com/en-us/library/cc663033.aspx – HCL 2011-04-30 09:32:23