2 回答
TA贡献1895条经验 获得超3个赞
我的建议是在 PageViewModel 的 ProductModel 中为 PropertyChanged 事件添加一个侦听器:
public void AttachListener()
{
foreach (var product in Items)
{
production.PropertyChanged += OnOrderCountUpdate;
}
}
private void OnOrderCountUpdate(object sender, PropertyChangedEventArgs e)
{
if(e.PropertyName == "ModelUpdateCount")
UpdateTotalOrderValue();
}
您应该在页面的 OnAppearing() 中附加侦听器,并在 OnDisappearing() 中将其删除
TA贡献1796条经验 获得超4个赞
您可以DataSource像这样创建一个新类:
public class PageVMDataSource
{
#region Attributes
private readonly PageVM pageVM;
private readonly ProductModel productModel;
#endregion
#region Public Methods
public PageVMDataSource(PageVM pageVM, ProductModel productModel)
{
this.pageVM = pageVM;
this.productModel= productModel;
}
public void Initialize()
{
this.productModel.PropertyChanged += this.OnProductModelPropertyChanged;
}
#endregion
#region Event Handlers
private void OnProductModelPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)
{
switch (propertyChangedEventArgs.PropertyName)
{
case "ModelUpdateCount":
this.pageVM.UpdateTotalOrderValue;
break;
}
}
#endregion
}
创建 VM 和模型时,创建一个新实例,DataSource以便它订阅模型更改并执行 VM 方法。
通过这样做,您正在应用 SOLID,并且您可以控制需要“通信”的一切
- 2 回答
- 0 关注
- 211 浏览
添加回答
举报