不要在Xamarin.Forms中的通用列表中重用stacklayout

时间:2014-08-04 15:37:43

标签: android xamarin.forms

我正在创建具有不同视图的stacklayout集,并将其添加到 List<单例类中的StackLayout> 。 当我创建一个新页面并使用stacklayout列表时,它按预期工作。但是当我在第二页中使用相同的列表时,它会抛出一个空指针异常,并且无法在第二页中添加stacklayout列表。

Singleton类:

  public class SessionData
  {

    private static SessionData _instance;
    public static SessionData Instance
    {
        get{
            if (_instance == null)
                _instance = new SessionData ();

            return _instance;
        }
    }
   public List<StackLayout> Views { get; set; } //List of stacklayout views
  }

在ContentPage中添加视图:

  StackLayout Scrollcontentview = new StackLayout ();
  var temp = SessionData.Instance.Views ;
  foreach (var content in temp) 
  {
            if(content != null)
            {
                Scrollcontentview.Children.Add(content );
            }
  }

如果我在 Page1 中使用代码在ContentPage中添加视图(在上面给出),它可以正常工作,当我导航到 Page2 时使用它失败的相同代码。

我不知道我哪里出错了。如果有人知道解决方案,分享它将非常有用。

先谢谢

1 个答案:

答案 0 :(得分:1)

简短回答:您无法在视图层次结构中多次重复使用可视元素。

更长的答案:避免使用单身人士。如果你真的想重用StackLayout,你必须确保首先从它的父项中删除它。