【问题标题】:WPF DataGrid: Displaying 2 decimal places when not editing, but full number when editingWPF DataGrid:不编辑时显示2位小数,但编辑时显示完整数字
【发布时间】:2015-06-01 17:16:25
【问题描述】:

我正在尝试创建一个数据网格,当用户输入值并按下回车键时,它会以 2 个小数点的精度显示数据。

但是当他们点击编辑它时,我希望他们能够再次查看整个数字。

我目前拥有的是:

<DataGridTextColumn Header="s" Binding="{Binding s, StringFormat=N2}" ElementStyle="{StaticResource TextColumnWhite}" >
    <DataGridTextColumn.EditingElementStyle>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="Text" Value="{Binding s}" />
            <Setter Property="Background" Value="Red" />
        </Style>
    </DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>

数据网格单元格显示红色背景,但内部数字未更新为非格式化值。

感谢您的帮助

【问题讨论】:

  • 您可能需要为该列设置掩码。
  • @Versatile 你能解释一下我会怎么做吗?

标签: c# wpf datagrid wpfdatagrid


【解决方案1】:

您需要去掉父级的字符串格式(它覆盖 EditingElementStyle) - 而是仅在 EditingElementStyle 的样式中设置绑定表达式的字符串格式 - 也适用于常规 ElementStyle(非编辑mode) 是 TextBlock 样式:

<DataGridTextColumn Header="s" ElementStyle="{StaticResource TextColumnWhite}">

    <!-- editing view -->
    <DataGridTextColumn.EditingElementStyle>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="Text" Value="{Binding s}" />                            
            <Setter Property="Background" Value="Red" />
        </Style>                        
    </DataGridTextColumn.EditingElementStyle>

    <!-- not editing view -->
    <DataGridTextColumn.ElementStyle>
        <Style TargetType="{x:Type TextBlock}">
            <Setter Property="Text" Value="{Binding s, StringFormat=N2}" />
            <Setter Property="Background" Value="Transparent" />
        </Style>
    </DataGridTextColumn.ElementStyle>

</DataGridTextColumn>

【讨论】:

  • 是的,这是正确的答案,我在回家的路上意识到了这一点,感觉自己像个白痴。谢谢!
【解决方案2】:

您也可以直接在DataGridTextColumn中添加StringFormat,如下所示:

<DataGridTextColumn Header="s" Binding="{Binding s, StringFormat=N2}" 
                    HeaderStyle="{StaticResource TextColumnWhite}"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    相关资源
    最近更新 更多