c# - 当我在 DataGridTemplateColumn.CellTemplate 中使用 TextBox 时,DataGrid.BeginningEdit 事件未触发

标签 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 替换了 TextBox。现在,事件处理程序被调用,但我无法编辑单元格值。那么,我该如何解决这个问题。

最佳答案

这是当单元格进入编辑模式时应用的单元格编辑模板,即发生 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>

关于c# - 当我在 DataGridTemplateColumn.CellTemplate 中使用 TextBox 时,DataGrid.BeginningEdit 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47350096/

相关文章:

c# - 触发事件时的事件和委托(delegate)顺序

c# - 优化复杂物体比较

c# - 英孚核心 2.1。如何还原迁移 "n"后退一步

C# wpf - 将已编辑的数据网格单元格值替换为现有单元格值

c# - 显示 DataTable 的值

c# - WPF 的 C# 代码中的 XPath

c# - XAML 路径元素 - 如何制作软角

c# - WPF MVVM 和 TPL 数据流中的进度条

c# - 列表框项目WPF,不同项目的不同背景颜色

actionscript-3 - 如何增加 Flex 3 中的水平网格线厚度