在DataGridTemplateColumn.CellTemplate中使用TextBox时,DataGrid.BeginningEdit事件未触发

时间:2017-11-17 11:54:43

标签: c# wpf datagrid

我想在数据网格中显示数据。并且只能编辑列中的一些单元格。因此,为此目的,我为一列定义了列模板,如下所示:

<DataGridTemplateColumn>
  <DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
      <TextBox IsReadOnly="{Binding IsReadOnly}"  BorderThickness="0" Text="{Binding Value, UpdateSourceTrigger= LostFocus}"></TextBox>
   </DataTemplate>
  </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

因此,根据模型对象的只读属性,单元格是否可编辑。这很有效。但是现在我想在用户开始编辑单元格时执行一些操作,所以我为它创建了一个处理程序DataGrid的BeginningEdit事件。但事件处理程序没有被调用。我用DataGridCell.Now替换了TextBox,调用了事件处理程序,但我无法编辑单元格值。所以,我该如何解决这个问题

1 个答案:

答案 0 :(得分:2)

当单元格进入编辑模式时应用Cell 编辑模板,即BeginningEdit事件发生时,因此您应添加TextBox到这一个:

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Value}"></TextBlock>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <TextBox IsReadOnly="{Binding IsReadOnly}"  BorderThickness="0" 
                     Text="{Binding Value, UpdateSourceTrigger= LostFocus}"></TextBox>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
相关问题