【问题标题】:WPF DataGrid 'CellFormatting Equivalent'WPF DataGrid 'CellFormatting 等效项'
【发布时间】:2011-04-13 12:16:35
【问题描述】:

我正在尝试从 WinForms 转换为 WPF,并且在使用 DataGridView -> WPF DataGrid 时遇到了一些困难。

我已经很好地加载了所有数据,只是卡在单元格格式上。

有一列带有数字,但是如果数字为零,而不是显示 0,我希望它显示 NIL。

使用DataGridView,下面的工作

    Private Sub SampleDGV_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles SampleDGV.CellFormatting

    Try
        If e.RowIndex >= 0 And e.ColumnIndex = SampleDGV.Columns(CostColumn.Name).Index Then
            If CDec(e.Value.ToString) = 0 Then
                e.Value = "NIL"
                e.FormattingApplied = True
            End If
        End If
    Catch ex As Exception

    End Try


End Sub

但现在我被 WPF 等价物难住了

【问题讨论】:

    标签: wpf datagrid formatting wpfdatagrid


    【解决方案1】:

    我不确定是否有一种简单的方法可以做到这一点,我会这样做,这似乎确实有效:

    使用自定义转换器定义自定义列:

    <DataGrid.Resources>
        <local:ZeroToNilConverter x:Key="ZeroToNilConverter"/>
    </DataGrid.Resources>
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Id, Converter={StaticResource ZeroToNilConverter}}" Header="Test"/>
    </DataGrid.Columns>
    
    //Sorry, i do not speak VB...
    public class ZeroToNilConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            int input = 0;
            try
            {
                input = (int)value;
            }
            catch (Exception)
            {
                return value;
            }
    
            if (input == 0) return "NIL";
            else return value;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            string input = value as string;
            if (input != null)
            {
                if (input == "NIL") return 0;
                else return value;
            }
            else
            {
                return value;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-15
      • 2016-01-07
      • 2010-10-27
      • 2020-08-31
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多