Yon*_*oni 3 wpf datagrid edit datagridcell
我有一个C#WPF Datagrid,带有复选框列,超链接列和文本列.我的DataGrid绑定到DataTable.列不是自动生成的,但我确实在代码中动态创建它们,因为事先不知道列数.我想启用单元格中的文本(用于ctrl + c目的),但禁用编辑.我不希望文本被更改.有人可以帮忙吗?
一种可能是使用DataGridTemplateColumn:
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox IsReadOnly="True" Text="{Binding YourProperty,Mode=OneWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)
这也适用于Checkboxes,添加CheckBox,绑定其IsChecked并将内容用作设置为IsReadOnly的TextBox.
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding YourBooleanValue}">
<TextBox IsReadOnly="True" Text="YourCopyableTextOrABindingToText"/>
</CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)
如果要将复选框设置为只读,请将其Enabled-property设置为false.但是在这种情况下,您必须将TextBox声明为子,而不是将其声明为CheckBox的兄弟(使用网格或StackPanel).
如果要为整个DataGrid创建只读数据,请使用:
<DataGrid IsReadOnly="True">
Run Code Online (Sandbox Code Playgroud)
列也可以:
<DataGridTextColumn IsReadOnly="True">
Run Code Online (Sandbox Code Playgroud)
如果要每行定义它,则必须使用DataGridTemplateColumns并绑定编辑控件的IsReadOnly-proeprty.
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox IsReadOnly="{Binind YourReadOnlyProperty}" Text="{Binding YourProperty,Mode=OneWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9367 次 |
| 最近记录: |