WPF Datagrid:通过已使用 ValueConverter 转换的 UI 编辑值 [关闭]

Posted

技术标签:

【中文标题】WPF Datagrid:通过已使用 ValueConverter 转换的 UI 编辑值 [关闭]【英文标题】:WPF Datagrid: Editing values via UI that have been converted using ValueConverter [closed] 【发布时间】:2020-08-27 23:15:45 【问题描述】:

我有一个带有“总金额”列的数据网格。这是一个双精度类型,由 IValueConverter 转换为带有“$”符号和逗号的货币类型。

(1) 但是单元格需要是可编辑的,这样用户才能对包括金额在内的行进行更改。我该怎么做呢?现在,编辑会冻结应用程序(并不奇怪),因为我不知道如何处理。

(2) 如果用户添加一个新行并向其添加一个新项目。如何在值前加上 $ 符号,并在用户键入时在相关位置添加逗号?

注意:一种解决方法是我猜想将 TotalAmount 属性本身作为一个字符串,并在我需要执行任何操作时转换为 double。还要添加验证以确保用户输入双精度类型。 但我仍然不知道如何实现第 2 点。

【问题讨论】:

【参考方案1】:

这里的关键是使用CellTemplate & CellEditingTemplate

感谢 - Link1 & Link2

我的解决方案是以上两者的结合——

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

【讨论】:

以上是关于WPF Datagrid:通过已使用 ValueConverter 转换的 UI 编辑值 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

突出显示 WPF DataGrid 的已编辑单元格

列的WPF DataGrid边框已移位

wpf怎样使用DataGrid控件

wpf怎样使用DataGrid控件

WPF DataGrid 多选绑定

在wpf设计的界面中,我通过DataGrid建立列表,我想通过点击列表头进行排序。