2012-03-13 6 views
1

Я пытаюсь удалить строковый формат ячейки во время редактирования, потому что это вызывает побочные эффекты. Фактически, он перемещает мой курсор во время редактирования ячейки.Удалить stringFormat при редактировании ячейки в datagrid

Вот мой код:

<DataGridTextColumn Width="15*" ElementStyle="{StaticResource RightAlignStyle}" 
Header="Coût (k€)" Binding="{Binding Path=TechnicalCostAmount, Mode=TwoWay, 
UpdateSourceTrigger=PropertyChanged, StringFormat=N0, ConverterCulture=fr-FR}"/> 

Я думаю, что я что-то сделать со свойством EditingElementStyle, но я не нашел ничего в Интернете, чтобы сделать это.

Надеюсь, вы могли бы мне помочь.

Приветствия Томас

ответ

4

Я думаю, вы могли бы использовать DataGridTemplateColumn:

<DataGridTemplateColumn Header="Coût (k€)"> 
     <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Path=TechnicalCostAmount, Mode=OneWay, StringFormat=N0, ConverterCulture=fr-FR}"/> 
     </DataTemplate> 
     </DataGridTemplateColumn.CellTemplate> 
     <DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <TextBox Text="{Binding Path=TechnicalCostAmount, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 
     </DataTemplate> 
     </DataGridTemplateColumn.CellEditingTemplate> 
    </DataGridTemplateColumn> 
+0

Это хороший подход, тоже. Существует множество различных способов удовлетворения этих требований. – Jeremiah

0

У вас есть много вариантов. Два из которых являются:

  1. Измените ваши привязки игнорировать StringFormat и переместить его в ViewModel/Модель
  2. Создание пользовательского Value Converter

Изменения вашего связывания является самым простым, однако мере многоразовым:

Обновление привязки в XAML:

<DataGridTextColumn 
    Width="15*" 
    ElementStyle="{StaticResource RightAlignStyle}" 
    Header="Coût (k€)" 
    Binding="{Binding Path=TechnicalCostAmount, Mode=TwoWay}"/> 

Затем в ViewModel/Model:

public string TechnicalCostAmount 
{ 
    get { return string.Format("{0:n0}", _TechnicalCostAmount); } 
    set 
    { 
     Decimal.TryParse(value, _TechnicalCostAmount); 
     RaisePropertyChange("TechnicalCostAmount"); 
    } 
} 

Создание конвертера пользовательское значение делает то же самое, что и выше код, однако это позволяет использовать его в нескольких местах.

См: http://wpftutorial.net/ValueConverters.html

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