WPF Datagrid:通过 UI 编辑已使用 ValueConverter 转换的值
WPF Datagrid: Editing values via UI that have been converted using ValueConverter
我有一个包含列 "Total Amount" 的数据网格。这是一个双精度类型,由 IValueConverter 转换为带有“$”符号和逗号的货币类型。
(1) 但单元格需要可编辑,以便用户可以对包含金额的行进行更改。我该怎么做呢?现在,编辑冻结了应用程序(不足为奇),因为我不知道如何处理这个问题。
(2) 如果用户添加了一个新行并向其中添加了一个新项目。如何在值前加上 $ 符号并在用户键入时在相关位置添加逗号?
注意: 一种解决方法是我想将 TotalAmount 属性 作为字符串本身,并在我需要执行任何操作时转换为双精度。还添加验证以确保用户输入双精度类型。 但我仍然不知道如何实施第 2 点。
此处的关键是使用 CellTemplate
& CellEditingTemplate
感谢 - Link1 &
我的解决方案是将以上两者组合为 -
<DataGridTemplateColumn Header="Total Amount">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=TotalAmount, Converter={StaticResource CurrencyConverter}}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=TotalAmount, StringFormat=\{0:N2\},UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
我有一个包含列 "Total Amount" 的数据网格。这是一个双精度类型,由 IValueConverter 转换为带有“$”符号和逗号的货币类型。
(1) 但单元格需要可编辑,以便用户可以对包含金额的行进行更改。我该怎么做呢?现在,编辑冻结了应用程序(不足为奇),因为我不知道如何处理这个问题。
(2) 如果用户添加了一个新行并向其中添加了一个新项目。如何在值前加上 $ 符号并在用户键入时在相关位置添加逗号?
注意: 一种解决方法是我想将 TotalAmount 属性 作为字符串本身,并在我需要执行任何操作时转换为双精度。还添加验证以确保用户输入双精度类型。 但我仍然不知道如何实施第 2 点。
此处的关键是使用 CellTemplate
& CellEditingTemplate
感谢 - Link1 &
我的解决方案是将以上两者组合为 -
<DataGridTemplateColumn Header="Total Amount">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=TotalAmount, Converter={StaticResource CurrencyConverter}}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=TotalAmount, StringFormat=\{0:N2\},UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>