gpt4 book ai didi

WPF 数据网格 - 启用选择、禁用文本输入

转载 作者:行者123 更新时间:2023-12-01 10:10:12 24 4
gpt4 key购买 nike

我有一个 C# WPF 数据网格,带有复选框列、超链接列和文本列。我的 DataGrid 绑定(bind)到 DataTable。这些列不是自动生成的,但我确实在代码中动态创建了它们,因为列数是事先不知道的。我想启用要选择的单元格中的文本(用于 ctrl+c 目的)但仍禁用编辑。我不想更改文本。谁能帮忙?

最佳答案

一种可能是使用 DataGridTemplateColumn:

<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox IsReadOnly="True" Text="{Binding YourProperty,Mode=OneWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

这也适用于复选框,添加一个复选框,绑定(bind)其 IsChecked 并将设置为 IsReadOnly 的文本框用作内容。

<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding YourBooleanValue}">
<TextBox IsReadOnly="True" Text="YourCopyableTextOrABindingToText"/>
</CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

如果您想让复选框只读,请将其 Enabled-property 设置为 false。但是在这种情况下,为此您必须将 TextBox 声明为 CheckBox 的同级(使用网格或 StackPanel)而不是子项。

如果要使整个 DataGrid 的数据只读,请使用:

<DataGrid IsReadOnly="True">

对于列也是可能的:

<DataGridTextColumn IsReadOnly="True">

如果要按行定义它,则必须使用 DataGridTemplateColumn 并绑定(bind)编辑控件的 IsReadOnly-proeprty。

<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox IsReadOnly="{Binind YourReadOnlyProperty}" Text="{Binding YourProperty,Mode=OneWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

关于WPF 数据网格 - 启用选择、禁用文本输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5830696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com