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

标签 wpf data-binding wpfdatagrid datagridtextcolumn

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

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

  • 能够开始在非编辑模式单元格中键入内容,这会自动将单元格置于编辑模式
  • 复制和粘贴数据(从 DataGrid 和 Excel)

当前绑定(bind)(期望的显示/读取模式绑定(bind))

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

所需的编辑模式绑定(bind)

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>

关于wpf - 当该列进入编辑模式时,有没有办法更改 DataGridTextColumn 的绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12500835/

相关文章:

c# - 检索 x :Name or x:Key from Brush

C#:应用程序中的内部文件数据库

javascript - Knockoutjs valueHasMutated 无法正常工作

silverlight - 将组合框绑定(bind)到枚举...在 Silverlight 中!

wpf - 使用 Storyboard作为计时器有什么意义?

c# - 可变数量矩形的动态数据显示图

wpf - 如何有选择地禁用 DataGrid 中的编辑?

c# - 如何在 WPF 工具包数据网格控件中设置水平网格线的粗细?

c# - 在 WPF4 DataGrid 中水平滚动时性能较差

c# - WPF GUI 对象共享 (PRISM/MEF)