我有一個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