WPF MVVM DataGrid绑定后界面更改数据如何在ViewModel中得到更改事件?

大地主刘发财 大地主刘发财 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
刚刚接触MVVM框架,好多地方都搞不懂,看书看得也是一脸懵逼,在这请教个问题
DataGrid绑定ObservableCollection,增加、删除新行的时候是有事件的,但修改现有行数据时是没有通知的,怎样才能在数据被修改的时候得到通知(事件)?

Model

public class DataModel : INotifyPropertyChanged
{
private int _id;
public int Id
{
get { return _id; }
set
{
_id = value;
OnPropChanged("Id");
}
}
private string _name;
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropChanged("Name");
}
}
private decimal _qty;
public decimal Qty
{
get { return _qty; }
set
{
_qty = value;
OnPropChanged("Qty");
}
}
private decimal _price;
public decimal Price
{
get { return _price; }
set
{
_price = value;
OnPropChanged("Price");
}
}
private decimal _amount;
public decimal Amount {
get { return _amount; }
set
{
_amount = value;
OnPropChanged("Amount");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}


ViewModel

private ObservableCollection<DataModel> _dataList = new ObservableCollection<DataModel>();
public ObservableCollection<DataModel> DataList
{
get { return _dataList; }
set { SetProperty(ref _dataList, value); }
}
public MainWindowViewModel()
{
DataList.Add(new DataModel
{
Id = 1,
Name = "杯",
Qty=5,
Price=20,
Amount=100
});
DataList.Add(new DataModel
{
Id=2,
Name="纸",
Qty=100,
Price=30,
Amount=3000
});
}


View

<DataGrid x:Name="dgv" ItemsSource="{Binding DataList}" Margin="57,40,446,247"/>

如图,当在界面上修改“数量”时,要自动计算金额,在MVVM这种模式下要如何实现?
...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
大地主刘发财
C# 111,128 成员 642,536 内容