Wpf 当DataGridTextColumn进入编辑模式时,是否有方法更改该列的绑定?

Wpf 当DataGridTextColumn进入编辑模式时,是否有方法更改该列的绑定?,wpf,data-binding,wpfdatagrid,datagridtextcolumn,Wpf,Data Binding,Wpfdatagrid,Datagridtextcolumn,我真正想做的就是为DataGridTextColumn上的特定绑定更改StringFormat,但由于这是由绑定定义的,我想我需要以某种方式更改整个绑定 我希望避免使用DataGridTemplateColumn的原因是,DataGridTextColumn似乎有一些内置的基本功能,我可能会丢失这些功能,并且必须编写代码来手动处理这些功能,例如: 能够开始在非编辑模式单元格中键入内容,从而使单元格自动进入编辑模式 复制和粘贴数据(从DataGrid和Excel中) 当前绑定(所需的显示/读取

我真正想做的就是为
DataGridTextColumn
上的特定绑定更改
StringFormat
,但由于这是由绑定定义的,我想我需要以某种方式更改整个绑定

我希望避免使用
DataGridTemplateColumn
的原因是,DataGridTextColumn似乎有一些内置的基本功能,我可能会丢失这些功能,并且必须编写代码来手动处理这些功能,例如:

  • 能够开始在非编辑模式单元格中键入内容,从而使单元格自动进入编辑模式
  • 复制和粘贴数据(从DataGrid和Excel中)
当前绑定(所需的显示/读取模式绑定)

所需的编辑模式绑定

Binding="{Binding ADecimalNumber StringFormat={StaticResource ReadDecimalFormat}}"
Binding="{Binding ADecimalNumber StringFormat={StaticResource WriteDecimalFormat}}"

仅供参考,
ReadDecimalFormat
用于显示精度为2位的十进制值,
WriteDecimalFormat
用于显示输入的原始十进制值(精度为所有位数,大多数情况下为4位)

我想我已经尝试让它工作,目前正在测试它

<DataGridTextColumn Header="Value" ClipboardContentBinding="{Binding ADecimalNumber}">
    <DataGridTextColumn.ElementStyle>
        <Style TargetType="TextBlock">
            <Setter Property="Text" Value="{Binding ADecimalNumber, StringFormat={StaticResource ReadDecimalFormat}}"/>
        </Style>
    </DataGridTextColumn.ElementStyle>
    <DataGridTextColumn.EditingElementStyle>
        <Style TargetType="TextBox">
            <Setter Property="Text" Value="{Binding ADecimalNumber, StringFormat={StaticResource WriteDecimalFormat}}"/>
        </Style>
    </DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>

我能够通过使用元素样式并检查我们是否正在编辑来完成这项工作:

<DataGridTextColumn>
    <DataGridTextColumn.ElementStyle>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="Text" Value="{Binding}" />
        </Style>
    </DataGridTextColumn.ElementStyle>


<DataGridTextColumn.EditingElementStyle>
    <Style TargetType="{x:Type TextBox}">
      <Setter Property="Text" Value="{Binding}" />
     </Style>
 </DataGridTextColumn.EditingElementStyle>


看起来复制和粘贴的自动处理不再适用于此解决方案,但F2编辑和键入编辑模式仍在工作。收回,复制/粘贴工作正常,只需将ClipboardContentBinding设置为正确的绑定,例如“{binding ADecimalNumber}”,我假设ClipboardContentBinding默认为绑定,如果它是在DataGridTextColumn元素上设置的,在这个解决方案中不再是这种情况,因此我们必须手动设置它