我是WPf Datagrid的新手。我的要求是如果我在datagrid中选择一个单元格并按Enter键,它应该更改为readonly = false(可编辑),用户可以更改内容,如果按下回车键,则单元格应该更改为readonly = true(不可编辑)。
我的xaml看起来像这样:
<DataGrid AutoGenerateColumns="False" Height="496" HorizontalAlignment="Left"
PreviewKeyDown="DgvMaterial_PreviewKeyDown" DataGridCell.Selected="DataGrid_select"
Name="DgvMaterial" VerticalAlignment="Top" Width="958" Margin="21,20,0,0"
ItemsSource="{Binding Path=., Mode=OneWay}"
AlternationCount="1" AlternatingRowBackground="#FFE9FFE9"
SelectionUnit="FullRow" CanUserResizeColumns="False" DataContext="{Binding}"
RowHeight="30" UseLayoutRounding="True"
RowHeaderWidth="0" OverridesDefaultStyle="False" ColumnHeaderHeight="30"
SelectionMode="Single" ScrollViewer.VerticalScrollBarVisibility="Auto"
FontFamily="MS Gothic" FontSize="12" CellStyle="{StaticResource Body_Content_DataGrid_Centering}"
IsHitTestVisible="True" SelectionChanged="DgvMaterial_SelectionChanged"
Loaded="DgvMaterial_Loaded" CellEditEnding="DgvMaterial_CellEditEnding" TabIndex="5"
SelectedIndex="-1" IsReadOnly="True">
答案 0 :(得分:2)
您正在寻找的是DataGridTemplateColumn
可能有2个模板。一个是显示值(DataGridTemplateColumn.CellTemplate
)而另一个是在编辑模式(DataGridTemplateColumn.CellEditingTemplate
)中使用:
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Path=.}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Column">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=ColumnName, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=ColumnName}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
您可以按列指定,而不是网格指定,默认情况下,它会在F2
上进入编辑模式或双击,但您可以DataGrid.PreviewKeyDown
和BeginEdit()
处理{{} 1}}