C# 如何从同一WPF数据网格中的两个输入列中获取总列值

C# 如何从同一WPF数据网格中的两个输入列中获取总列值,c#,wpf,C#,Wpf,如何计算两个输入列的值,以便在运行时在同一数据网格中显示总计列。哪个事件是计算网格值的最佳事件。请帮帮我 XAML: 如果要使用事件计算总和,可能需要检查。然而,在WPF中更好的方法是数据绑定,因为它可以让您更好地控制何时更新数据,并且它可以更好地分离表示代码和业务代码(这就是MVVM的作用) 数据绑定意味着创建一个包含数据的对象,并将其与DataGrid连接。网格将显示对象的信息,并在用户更改网格数据时进行更新。它还自动执行必要的转换。当对象实现INotifyPropertyChanged事件

如何计算两个输入列的值,以便在运行时在同一数据网格中显示总计列。哪个事件是计算网格值的最佳事件。请帮帮我

XAML:


如果要使用事件计算总和,可能需要检查。然而,在WPF中更好的方法是数据绑定,因为它可以让您更好地控制何时更新数据,并且它可以更好地分离表示代码和业务代码(这就是MVVM的作用)

数据绑定意味着创建一个包含数据的对象,并将其与
DataGrid
连接。网格将显示对象的信息,并在用户更改网格数据时进行更新。它还自动执行必要的转换。当对象实现
INotifyPropertyChanged
事件时,对象更改时,
DataGrid
也将更新(无论是谁更改了它:具有编辑权限的用户还是程序代码中的应用程序)。在您的情况下,您将需要类似的东西:

class ExampleObject : INotifyPropertyChanged {
    private int m_value1;
    private int m_value2;

    public int Value1 {
        get {
            return m_value1;
        }
        set {
            if (value != m_value1) {
                m_value1 = value;
                OnPropertyChanged(new PropertyChangedEventArgs(nameof(Value1));
                OnPropertyChanged(new PropertyChangedEventArgs(nameof(Sum));
            }
        }
    }

    public int Value2 {
        get {
            return m_value2;
        }
        set {
            if (value != m_value2) {
                m_value2 = value;
                OnPropertyChanged(new PropertyChangedEventArgs(nameof(Value2));
                OnPropertyChanged(new PropertyChangedEventArgs(nameof(Sum));
            }
        }
    }

    public int Sum {
        get {
            return m_value1 + m_value2;
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, e);
        }
    }
}

将数据对象绑定到网格时,它将发现它实现了
INotifyPropertyChanged
,并在编辑值时自动更新。检查如何将对象绑定到
数据网格

欢迎使用StackOverflow!我们想帮助你,但你必须告诉我们更多关于你的问题,并向我们展示你已经尝试过的东西。私有无效dgSubject_CellEditEnding(对象发送方,DataGridCellEditEndingEventArgs e){}
private void dgSubject_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) { }
class ExampleObject : INotifyPropertyChanged {
    private int m_value1;
    private int m_value2;

    public int Value1 {
        get {
            return m_value1;
        }
        set {
            if (value != m_value1) {
                m_value1 = value;
                OnPropertyChanged(new PropertyChangedEventArgs(nameof(Value1));
                OnPropertyChanged(new PropertyChangedEventArgs(nameof(Sum));
            }
        }
    }

    public int Value2 {
        get {
            return m_value2;
        }
        set {
            if (value != m_value2) {
                m_value2 = value;
                OnPropertyChanged(new PropertyChangedEventArgs(nameof(Value2));
                OnPropertyChanged(new PropertyChangedEventArgs(nameof(Sum));
            }
        }
    }

    public int Sum {
        get {
            return m_value1 + m_value2;
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, e);
        }
    }
}