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元素上设置的,在这个解决方案中不再是这种情况,因此我们必须手动设置它