在datagrid中编辑单元格时删除stringFormat

时间:2012-03-13 14:19:21

标签: wpf xaml 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属性做一些事情,但我在Web上找不到任何东西。

希望你能帮助我。

干杯 托马斯

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

你有很多选择。其中两个是:

  1. 更改绑定以忽略stringformat并将其移至ViewModel / Model
  2. 创建自定义值转换器
  3. 更改绑定是最简单的,但最少可重复使用

    更新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