c# - WPF Datagrid:通过 UI 编辑已使用 ValueConverter 转换的值
问题描述
我有一个带有“总金额”列的数据网格。这是一种双精度类型,由 IValueConverter 转换为带有“$”符号和逗号的货币类型。
(1) 但是单元格需要是可编辑的,以便用户可以更改包括金额在内的行。我该怎么做呢?现在,编辑会冻结应用程序(并不奇怪),因为我不知道如何处理这个问题。
(2) 如果用户添加了一个新行并添加了一个新项目。如何在值前加上 $ 符号并在用户键入时在相关位置添加逗号?
注意:一种解决方法是我猜想将 TotalAmount 属性作为字符串本身,并在我需要执行任何操作时转换为双精度。还要添加验证以确保用户输入双精度类型。但我仍然不知道如何实施第 2 点。
解决方案
这里的关键是使用CellTemplate
&CellEditingTemplate
我的解决方案是以上两者的结合——
<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>
推荐阅读
- switch-statement - Discord.js 在 Switch 中的默认命令问题
- android - 使用 Room 观察多个表中的数据变化
- regex - 用 1 个正则表达式匹配 2 个 Pulse Secure 事件
- swift - Swift 在自定义标识符之间使 UILabel 文本加粗
- excel - excel本机数据库查询 - 默认情况下接受弹出消息?
- python - Pyinstaller 不支持 Com Server 和 py2exe 在最近的 python3 中不维护
- python - 如果满足某些条件,则合并两个完整的行
- amazon-web-services - 带有 AWS-Lambda 的 MCS 返回错误 此操作不支持一致性级别 LOCAL_ONE。支持的一致性级别是:LOCAL_QUORUM
- python - 数独求解器:使用此程序不提供任何输出
- haskell - 单位情况下如何理解米田的基数?