我正在尝试在编辑时删除单元格的字符串格式,因为它会导致副作用。实际上,当我正在编辑单元格时,它正在移动光标。
这是我的代码:
<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上找不到任何东西。
希望你能帮助我。
干杯 托马斯
答案 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)
你有很多选择。其中两个是:
更改绑定是最简单的,但最少可重复使用:
更新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");
}
}
创建自定义值转换器与上面的代码完全相同,但它允许您在多个位置使用它。