我真正想做的就是为StringFormat
上的特定绑定更改DataGridTextColumn
,但由于这是由绑定定义的,我想我需要以某种方式更改整个绑定。
我想避免使用DataGridTemplateColumn
的原因是因为DataGridTextColumn似乎有一些我会丢失的内置基本功能,并且必须编写代码来手动处理更多,例如:
电流绑定(所需显示/读取模式绑定)
Binding="{Binding ADecimalNumber StringFormat={StaticResource ReadDecimalFormat}}"
所需的编辑模式绑定
Binding="{Binding ADecimalNumber StringFormat={StaticResource WriteDecimalFormat}}"
正如一个FYI,ReadDecimalFormat
是显示精度为2位的十进制值,WriteDecimalFormat
是显示输入的原始十进制值(精度的所有数字,大多数这是4位数的情况
答案 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>