3

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

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

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

当前绑定(所需的显示/读取模式绑定)

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

所需的编辑模式绑定

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

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

4

2 回答 2

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>
于 2012-09-19T19:18:48.933 回答
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>

于 2012-09-19T19:20:06.700 回答