2015-06-01 2 views
1

Я пытаюсь получить datagrid, где, когда пользователь вводит значение и нажимает enter, он отображает данные с точностью до 2 десятичных точек.WPF DataGrid: отображение 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> 

Красный фон отображения для DataGrid ячейки, но количество внутри не обновляется на не отформатирован значения.

Спасибо за любую помощь

+0

Возможно, вам потребуется установить маску для этого столбца. – Versatile

+0

@Versatile Не могли бы вы объяснить, как я буду заниматься этим? – bgore

ответ

2

Вы должны забрать формат строки на родительском уровне (который переопределение в EditingElementStyle) - и вместо того, чтобы установить формат строку для выражения привязки только в стилях для EditingElementStyle - но также для обычного ElementStyle (режим без редактирования), который является стилем 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> 
+0

Да, это правильный ответ, я понял это по дороге домой и почувствовал себя идиотом. Благодаря! – bgore

Смежные вопросы