WPF MVVM DataGrid绑定后界面更改数据如何在ViewModel中得到更改事件?
刚刚接触MVVM框架,好多地方都搞不懂,看书看得也是一脸懵逼,在这请教个问题
DataGrid绑定ObservableCollection,增加、删除新行的时候是有事件的,但修改现有行数据时是没有通知的,怎样才能在数据被修改的时候得到通知(事件)?
Model
ViewModel
View
如图,当在界面上修改“数量”时,要自动计算金额,在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这种模式下要如何实现?

...全文
相关推荐
使用MVVM在WPF工具包DataGrid中通过拖放合并两行
在WPF应用中,MVVM(Model-View-ViewModel)是一种设计模式,它鼓励分离界面逻辑(View)和业务逻辑(ViewModel),同时保持数据模型(Model)与界面的同步。
WPF MVVM模式下实现DataGrid全选功能的简易Demo项目
ICommand接口定义如下:CanExecute:判断命令是否可执行,决定UI控件是否启用;Execute:实际执行逻辑;:通知WPF重新评估CanExecute结果。由于每次都要手动实现该接口较为繁琐,通常使用或进行封装:?逻辑分析:- 构造函数接收执行动作和条件判断委托;CanExecute调用预设的,返回布尔结果;Execute执行传入的动作;订阅全局事件,确保在合适时机重新查询可用性。
Silverlight下MVVM全选控件_无需额外添加字段
MVVM模式是一种软件设计模式,用于构建用户界面,特别是在WPF和Silverlight中广泛应用。
WPF_MVVM中DataGrid列中使用ComBox绑定
在WPF(Windows Presentation Foundation)开发中,MVVM(Model-View-ViewModel)设计模式被广泛应用,它将用户界面(View)、数据模型(Model)
wpf中DataGrid数据双向绑定
双向绑定的概念基于MVVM(Model-View-ViewModel)设计模式,该模式鼓励分离关注点,使应用程序的界面逻辑、业务逻辑和数据存储相互独立。


