WPF DataGrid:不编辑时显示2个小数位,编辑时显示完整数

时间:2015-06-01 17:16:25

标签: c# wpf datagrid wpfdatagrid

我正在尝试拥有一个数据网格,当用户输入值并按Enter键时,它会显示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>

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

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

您需要取消父级别的字符串格式(覆盖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>

答案 1 :(得分:0)

您还可以像这样直接在DataGridTextColumn中添加StringFormat

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