Xamarin 未从可观察集合中移除项
在我的xamarin.forms应用程序中,我发现了一个问题,在我的购物车页面中,我在单击按钮“项目添加到购物车”时有一个+按钮,如果我再次单击该按钮,它将被删除,但在导航回“从购物车页面”后,我无法删除项目Xamarin 未从可观察集合中移除项,xamarin,observablecollection,xamarin.forms,Xamarin,Observablecollection,Xamarin.forms,在我的xamarin.forms应用程序中,我发现了一个问题,在我的购物车页面中,我在单击按钮“项目添加到购物车”时有一个+按钮,如果我再次单击该按钮,它将被删除,但在导航回“从购物车页面”后,我无法删除项目 btn_Cart.Clicked += (sender, e) =>{ sender = BindingContext; cm_items item = (cm_items)sender;
btn_Cart.Clicked += (sender, e) =>{
sender = BindingContext;
cm_items item = (cm_items)sender;
Int32 inItemId = (BindingContext as cm_items).item_id;
var count = App.Instance.ViewModel.TempList.Count;
var value = App.Instance.ViewModel.TempList;
Boolean blInsertStatus = true;
try{
if (count == 0) {
item.IsAddedToCart = true;
value.Add(item);
}
else
{
for (int i = 0; i < count; i++)
{
if (value [i].item_id == inItemId)
{
value.Remove(item);
blInsertStatus = false;
item.IsAddedToCart = false;
break;
}
}
if (blInsertStatus)
{
if (item.IsAddedToCart)
{
item.IsAddedToCart = false;
value.Remove(item);
}
else
{
item.IsAddedToCart = true;
value.Add(item);
}
}
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString());
throw;
} };
btn\u Cart.Clicked+=(发件人,e)=>{
发送方=绑定上下文;
cm_项目=(cm_项目)发送方;
Int32 inItemId=(BindingContext作为cm_项);
var count=App.Instance.ViewModel.templast.count;
var值=App.Instance.ViewModel.templast;
布尔blInsertStatus=true;
试一试{
如果(计数=0){
item.IsAddedToCart=真;
增值(项目);
}
其他的
{
for(int i=0;i
第一次删除项目时没有问题,但导航到其他页面后会产生问题。项目没有被删除,图像也没有更改。我的代码有什么问题?您的事件有可能注册两次,这会导致问题吗 页面上的第一次访问:btn_Cart.Clicked+= 页面上的第二次访问:btn_Cart.Clicked+=
多久调用一次“btn_Cart.Clicked”?对于进一步调试,我建议添加一些调试输出。类似于:“添加项目”、“删除项目”。这样您就可以看到您的代码实际做了什么 您的事件是否有可能注册两次,从而导致问题 页面上的第一次访问:btn_Cart.Clicked+= 页面上的第二次访问:btn_Cart.Clicked+=
多久调用一次“btn_Cart.Clicked”?对于进一步调试,我建议添加一些调试输出。类似于:“添加项目”、“删除项目”。这样您就可以看到您的代码实际做了什么 我使用的是xamairn.forms,每次单击都可以触发click事件。我不明白你发布了什么?如果你在每个值后添加调试输出。删除(项);增加(项目);-你得到了预期的输出吗?我说的是活动登记。也许它被注册了不止一次。这样,单击按钮后,您的功能将执行两次或更多次。我可以先添加和删除,但当我从页面返回时,我无法删除添加的项目。这就是我的问题是的,是的,我想我理解你的问题。您可以输出一些调试信息或逐步完成代码吗?我可以解释,在第一次计数为“0”时,值可以直接保存,如果保存了项目a,我会将IsAddedToCart=true用于更改图像。最初,添加项目后,按钮图像为+,它将更改为-。但是如果集合包含值,我们必须在此处检查重复,我使用项目id进行检查,如果包含项目将被删除,这是我正在做的,但不起作用。它在第一次工作,但返回到另一页后不工作。我不能发布我的调试,我不知道如何发布我使用的是xamairn.forms,我可以在每次点击时触发点击事件。我不明白你发布了什么?如果你在每个值后添加调试输出。删除(项);增加(项目);-你得到了预期的输出吗?我说的是活动登记。也许它被注册了不止一次。这样,单击按钮后,您的功能将执行两次或更多次。我可以先添加和删除,但当我从页面返回时,我无法删除添加的项目。这就是我的问题是的,是的,我想我理解你的问题。您可以输出一些调试信息或逐步完成代码吗?我可以解释,在第一次计数为“0”时,值可以直接保存,如果保存了项目a,我会将IsAddedToCart=true用于更改图像。最初,添加项目后,按钮图像为+,它将更改为-。但是如果集合包含值,我们必须在此处检查重复,我使用项目id进行检查,如果包含项目将被删除,这是我正在做的,但不起作用。它在第一次工作,但返回到另一页后不工作。我不能发布我的调试,我不知道如何发布它