Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin 未从可观察集合中移除项_Xamarin_Observablecollection_Xamarin.forms - Fatal编程技术网

Xamarin 未从可观察集合中移除项

Xamarin 未从可观察集合中移除项,xamarin,observablecollection,xamarin.forms,Xamarin,Observablecollection,Xamarin.forms,在我的xamarin.forms应用程序中,我发现了一个问题,在我的购物车页面中,我在单击按钮“项目添加到购物车”时有一个+按钮,如果我再次单击该按钮,它将被删除,但在导航回“从购物车页面”后,我无法删除项目 btn_Cart.Clicked += (sender, e) =>{ sender = BindingContext; cm_items item = (cm_items)sender;

在我的xamarin.forms应用程序中,我发现了一个问题,在我的购物车页面中,我在单击按钮“项目添加到购物车”时有一个+按钮,如果我再次单击该按钮,它将被删除,但在导航回“从购物车页面”后,我无法删除项目

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进行检查,如果包含项目将被删除,这是我正在做的,但不起作用。它在第一次工作,但返回到另一页后不工作。我不能发布我的调试,我不知道如何发布它