WPF MVVM模式计算数据网格行列值

WPF MVVM模式计算数据网格行列值,wpf,Wpf,我想在用户添加行时计算datagrid列值 这是我的密码 <DataGrid HorizontalAlignment="Left" ItemsSource="{Binding SaleryDetailsCollection,NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False" VerticalAlignment="Top" Width="640" Heigh

我想在用户添加行时计算datagrid列值

这是我的密码

<DataGrid HorizontalAlignment="Left" ItemsSource="{Binding SaleryDetailsCollection,NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False" VerticalAlignment="Top" Width="640" Height="192" LoadingRow="dataGrid_LoadingRow">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Type" Binding="{Binding Type, Mode=TwoWay, NotifyOnTargetUpdated=True, ValidatesOnDataErrors=True}" Width="*" />
            <DataGridTextColumn Header="Amount" Binding="{Binding Amount, Mode=TwoWay, NotifyOnTargetUpdated=True, ValidatesOnDataErrors=True}" Width="*" />
        </DataGrid.Columns>
    </DataGrid>

像这样的可观察的分配

public ObservableCollection<SaleryDetailsModel> SaleryDetailsCollection
    {
        get
        {
            return _SaleryDetailsCollection; 
        }
        set
        {
             SalaryTotal = value.Sum(x => x.Amount);
            _SaleryDetailsCollection = value;
            NotifyPropertyChanged("SaleryDetailsCollection");
        }
    }
public observeCollection saleryDetails集合
{
收到
{
退货-销售详情收集;
}
设置
{
SalaryTotal=value.Sum(x=>x.Amount);
_SaleryDetailsCollection=值;
NotifyPropertyChanged(“SaleryDetailsCollection”);
}
}

此处,SalaryTotal上的total sum of Amount列not calclulat

当您从
ObservableCollection
添加和删除行时,它实际上不会更改集合实例,因此您的代码不会运行。集合上有一个名为的事件,在添加或删除行时引发,您应该钩住该事件。你应该能够在那里重新计算你的总数。不过,在实际添加/删除行的事件内部进行计算可能更容易

如果SalaryTotal是一个您也要绑定的属性,那么您可能还需要调用
NotifyPropertyChanged(“SalaryTotal”)重新计算后,如果属性设置器中尚未进行更改,则UI将看到更改