如何解决一旦程序运行足够,双击就会在$ dataContext上传递null
我有一个使用Caliburn Micro MVVM的简单WPF程序。它允许搜索库存,并将其添加到购物车。 购物车具有向上和向下箭头,单击即可调用QtyDeltaBuy()。这会调整库存。
我可以用一个物品复制它,但是购物车中的物品越多,越容易造成。箭头的xaml是:
<Image Source="/Images/Arrow1.png" cal:Message.Attach="[Event MouseDown] = [Action QtyDeltaBuy($dataContext,1)]"/>
和它正在调用的c#方法:
public void QtyDeltaBuy(CartModel.CartContents card,int deltaQty)
{
var cartItem = CartBuy.FirstOrDefault(x => x.InventoryMtgId == card.InventoryMtgId);
cartItem.Quantity += deltaQty;
CartRefreshBuy(card);
}
一切正常,直到购物车中有足够的物品,或者通过调试,我相信进程内存足够高(开始时为75MB,大约90MB),然后双击即可。我不知道它是否将其视为2次快速单击,但这是双击的速度。我将其称为双击,因为这就是速度。当我这样做时,大约有90MB的进程内存,这是效果/错误:
- 一次成功运行方法
- 从$ dataContext传递带有NULL的运行方法
因此,它不是真正的双击,而是注册并增加了第一次单击,而第二次单击则传递NULL。一旦发生这种情况,我可以按需复制它。单击一次就可以了,无论双击速度如何都会导致此错误。
如果我清空购物车(BindableCollection),则可以在其上运行.Clear(),问题将消失,直到内存使用量再次达到〜90MB。这是我在WPF中的第一个程序,因此查看内存使用对我来说也是新的。我可以轻松地向c#中添加if(cart == null){return;},而忽略null传递,但这感觉不对。我希望了解并解决正在发生的事情。供参考,程序启动时为75MB。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。