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

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

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

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

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

【问题讨论】:

    标签: c# wpf data-binding converters ivalueconverter


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 2011-11-10
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多