如何使只读数据网格中的一列可编辑?
<DataGrid x:Name="dgLoadDtl" Height="315" Width="710" Grid.Row="0"
HorizontalAlignment="Left" VerticalAlignment="Bottom"
Style="{DynamicResource StyleDatagrid}"
IsReadOnly="true">
<DataGrid.Columns>
<DataGridTextColumn Foreground="Black" Width="60" Header="Sctn" Binding="{Binding Sctn, Mode=TwoWay}" IsReadOnly="false" />
<DataGridTextColumn Foreground="Black" Width="140" Header="CustName" Binding="{Binding CustName, Mode=TwoWay}" />
<DataGridTextColumn Foreground="Black" Width="140" Header="Address" Binding="{Binding Address1, Mode=TwoWay}" />
<DataGridTextColumn Foreground="Black" Width="50" Header="Bulk or Bag" Binding="{Binding BulkorBag, Mode=TwoWay}" />
<DataGridTextColumn Foreground="Black" Width="80" Header="ProdCode" Binding="{Binding ProdCode, Mode=TwoWay}" />
<DataGridTextColumn Foreground="Black" Width="80" Header="MedCode" Binding="{Binding MedCode, Mode=TwoWay}" />
2条答案
按热度按时间nbnkbykc1#
我创建了一个示例,其中将DataGrid的ItemsSource绑定到ObservableCollection,从这里您有两个选项。
1.在数据网格上设置AutoGenerateColumns=“False”,并为所有列设置IsReadOnly=“True”,但不包括希望可编辑的列,您将设置IsReadOnly=“False”。
下面是选项1的示例代码:
r1wp621o2#
当
DataGrid
绑定到一个只读视图(一种用IEnumerable
生成的视图)时,您不能将其属性IsReadOnly
设置为"false"
,因为WPF不喜欢这样做,而且您必须使用其他方法,例如将可编辑列转换为DataGridTemplateColumn
。例如,如果您有一个复选框样式的列,如下所示
要使其可编辑/可更改,您可以将其替换为如下内容
作为此列的附加功能,您将获得一键更改行为(ref)