Удалить stringFormat при редактировании ячейки в сетке данных - PullRequest
2 голосов
/ 13 марта 2012

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

Вот мой код:

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

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

Надеюсь, вы мне поможете.

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

Ответы [ 2 ]

5 голосов
/ 13 марта 2012

Я думаю, вы могли бы использовать 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 голосов
/ 13 марта 2012

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

  1. Измените привязку, чтобы игнорировать формат строки и переместите ее в модель ViewModel / Model
  2. Создание собственного конвертера значений

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

Обновление привязки в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...