当该列进入编辑模式时,有没有办法更改DataGridTextColumn的绑定?

时间:2012-09-19 18:39:18

标签: wpf data-binding wpfdatagrid datagridtextcolumn

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

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

  • 能够开始输入非编辑模式单元格,使单元格自动进入编辑模式
  • 复制和粘贴数据(来自DataGrid和Excel中)

电流绑定(所需显示/读取模式绑定)

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

所需的编辑模式绑定

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

正如一个FYI,ReadDecimalFormat是显示精度为2位的十进制值,WriteDecimalFormat是显示输入的原始十进制值(精度的所有数字,大多数这是4位数的情况

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:2)

我能够使用元素样式完成此操作并检查我们是否正在编辑:

<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>