可扩展列表视图中的引用错误

时间:2018-03-05 06:41:48

标签: xaml xamarin.forms

我正在尝试在表单中创建一个可扩展的列表视图,并且我收到错误“找不到类型或命名空间名称'Items'(您是否缺少using指令或程序集引用?)”我试图触摸时按钮隐藏或显示布尔值。

using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Threading.Tasks;

using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace ExpandableListViewTest
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class ListViewType : ContentPage
    {
        public ObservableCollection<string> Items { get; set; }

        public bool IsVisible { get; set; }

        public ListViewType()
        {
            InitializeComponent();
            IsVisible = false;

            Items = new ObservableCollection<string>
            {
                new Items
                {
                    Title = "Sad"
                },
                new Items
                {
                    Title = "Angry"
                },
                new Items
                {
                    Title = "Fearful"
                }
            };
        }
        public void HideOrShowItem(Items item)
        {
            item.IsVisible = true;

            UpdateItems(item);
        }
        private void UpdateProducts(Items item)
        {
            var index = Items.IndexOf(item);
            Items.Remove(item);
            Items.Instert(index, item);

        }
    }
}

1 个答案:

答案 0 :(得分:0)

您的ObservableCollection Items具有类型参数string,但您正在尝试创建Items类型的对象,这有两个原因无法实现

  • 首先(这就是编译器所抱怨的)没有类型 Items,因此你无法创建这种类型的实例
  • 其次,如果ObservableCollection具有类型参数string,则无法添加除字符串之外的任何项目。

您可以在集合中添加字符串

Items = new ObservableCollection<string>
            {
                "Sad",
                "Angry",
                "Fearful"
            };

您创建了类型Item(重命名)

class Item
{
    Title { get; set; }
}

然后创建该类型的实例:

Items = new ObservableCollection<Item>
            {
                new Item
                {
                    Title = "Sad"
                },
                new Item
                {
                    Title = "Angry"
                },
                new Item
                {
                    Title = "Fearful"
                }
            };

当然,您必须将Items的类型更改为ObservableCollection<Item>,原因如上所述(无法将Item类型的对象添加到ObservableCollection<string> })。