【问题标题】:Item is not remove from observable collection项目未从可观察集合中移除
【发布时间】:2015-12-01 19:36:59
【问题描述】:

在我的 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;
                    } };

当我第一次删除一个项目时没有问题,但是导航到不同的页面后它会产生问题。项目没有被删除并且图像没有被更改。我的代码有什么问题?

【问题讨论】:

    标签: xamarin observablecollection xamarin.forms


    【解决方案1】:

    是否有可能您的活动被注册了两次,这会导致麻烦?

    第一次访问页面:btn_Cart.Clicked += ...

    页面第二次访问:btn_Cart.Clicked += ...

    “btn_Cart.Clicked”多久被调用一次?为了进一步调试,我建议添加一些调试输出。类似于:“已添加项目”、“已删除项目”。这样你就可以看到你的代码实际上做了什么。

    【讨论】:

    • 我正在使用 xamairn.forms,我可以在每次点击时触发点击事件。我不明白你发布的内容?
    • 如果在每个值之后添加调试输出。Remove(item);和 value.Add(item); - 你得到预期的输出吗?我在谈论事件注册。也许它不止一次被注册。这样,您的函数将在您单击按钮后执行两次或更多次。
    • 我可以先添加和删除,但是当我从页面返回时,我无法删除添加的项目。这是我的问题
    • 是的,是的,我想我理解了你的问题。能否输出一些调试信息或单步调试代码?
    • 我可以解释一下,在第一次计数为“0”时,如果保存的项目我将设置 IsAddedToCart = true 以更改图像,则可以直接保存值。最初,按钮图像是 + 添加项目后它将更改为 - 。但是如果集合包含一个值,我们必须在这里检查重复我使用 item_id 进行检查,如果包含项目将被删除,这就是我正在做但不工作.它在第一次工作但回到其他页面后无法工作。我无法发布我的调试,我不知道如何发布它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    相关资源
    最近更新 更多