Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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
C# 如何在选项卡式页面中绑定内容页标题和listview_C#_Rest_Xamarin.forms_Xamarin.ios - Fatal编程技术网

C# 如何在选项卡式页面中绑定内容页标题和listview

C# 如何在选项卡式页面中绑定内容页标题和listview,c#,rest,xamarin.forms,xamarin.ios,C#,Rest,Xamarin.forms,Xamarin.ios,我们正在C#,visualstudio 2017和Xamarin中开发iOS购物车应用程序。我们正在使用rest web服务,我在数据绑定方面遇到了一些问题: 如何在选项卡式页面中绑定内容页面(选项卡式页面的子页面)标题和listview 现在选项卡式页面工作正常,但listview不工作,请您帮助我们解决此问题,我们正在粘贴下面的代码 选项卡Page1.xaml.cs namespace SalesRep.SalesOrderPages { [XamlCompilation(XamlC

我们正在
C#
visualstudio 2017
Xamarin
中开发iOS购物车应用程序。我们正在使用rest web服务,我在数据绑定方面遇到了一些问题:

如何在选项卡式页面中绑定内容页面(选项卡式页面的子页面)标题和listview

现在选项卡式页面工作正常,但listview不工作,请您帮助我们解决此问题,我们正在粘贴下面的代码

选项卡Page1.xaml.cs

namespace SalesRep.SalesOrderPages
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class TabbedPage1 : TabbedPage
    {
        ObservableCollection<Class1> Filter = new ObservableCollection<Class1>();
        public TabbedPage1()
        {
            InitializeComponent();
        }

        protected async override void OnAppearing()
        {
            base.OnAppearing();

            var lst = await App.TodoManager.GetItemTasksAsync("all");//this is catalog list from rest | var MyTabTitle = await App.TodoManager.GetEmployeeTasksAsync("Roudy");//this is Salerep Employee list from rest
            var myArray = MyTabTitle.ToArray<Employee>();
            var arraycount = MyTabTitle.Count;
            int arraypos = 0;
            RootObject2 rs = new RootObject2();

            foreach (var i in lst)
            {
                var hai = JsonConvert.SerializeObject(i);
                var myitem = JsonConvert.DeserializeObject<RootObject2>(hai);
                var lst1 = new Class1 // Here i have created Class1 which i display tab title and cataloge item
                {
                    FilterName=myArray[arraypos].FilterName,
                    Items= myitem.Catalog                  
                };

                if (arraypos < arraycount -1)
                    arraypos = arraypos + 1;
                else
                    break;

                Filter.Add(lst1);
            }
            ItemsSource = Filter;
        }
    }
}        
namespace SalesRep.Models
{
    public class Catalogcls: INotifyPropertyChanged
    {        
        public string Type { get; set; }
        public string Image { get; set; }
        public string Name { get; set; }
        public string UnitPrice { get; set; }
        public double Price { get; set; }
        public string Pack { get; set; }
    }

    public class RootObject2
    {
        public ObservableCollection<Catalogcls> Catalog { get; set; }
    }
}        
目录类

namespace SalesRep.SalesOrderPages
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class TabbedPage1 : TabbedPage
    {
        ObservableCollection<Class1> Filter = new ObservableCollection<Class1>();
        public TabbedPage1()
        {
            InitializeComponent();
        }

        protected async override void OnAppearing()
        {
            base.OnAppearing();

            var lst = await App.TodoManager.GetItemTasksAsync("all");//this is catalog list from rest | var MyTabTitle = await App.TodoManager.GetEmployeeTasksAsync("Roudy");//this is Salerep Employee list from rest
            var myArray = MyTabTitle.ToArray<Employee>();
            var arraycount = MyTabTitle.Count;
            int arraypos = 0;
            RootObject2 rs = new RootObject2();

            foreach (var i in lst)
            {
                var hai = JsonConvert.SerializeObject(i);
                var myitem = JsonConvert.DeserializeObject<RootObject2>(hai);
                var lst1 = new Class1 // Here i have created Class1 which i display tab title and cataloge item
                {
                    FilterName=myArray[arraypos].FilterName,
                    Items= myitem.Catalog                  
                };

                if (arraypos < arraycount -1)
                    arraypos = arraypos + 1;
                else
                    break;

                Filter.Add(lst1);
            }
            ItemsSource = Filter;
        }
    }
}        
namespace SalesRep.Models
{
    public class Catalogcls: INotifyPropertyChanged
    {        
        public string Type { get; set; }
        public string Image { get; set; }
        public string Name { get; set; }
        public string UnitPrice { get; set; }
        public double Price { get; set; }
        public string Pack { get; set; }
    }

    public class RootObject2
    {
        public ObservableCollection<Catalogcls> Catalog { get; set; }
    }
}        
名称空间SalesRep.Models
{
公共类目录CLS:INotifyPropertyChanged
{        
公共字符串类型{get;set;}
公共字符串图像{get;set;}
公共字符串名称{get;set;}
公共字符串单价{get;set;}
公共双价{get;set;}
公共字符串包{get;set;}
}
公共类RootObject2
{
公共ObservableCollection目录{get;set;}
}
}        
一级

namespace SalesRep.Models
{
    public class Class1
    {
        public string FilterName { get; set; }
        public ObservableCollection<Catalogcls> Items { get; set; }
    }
}
名称空间SalesRep.Models
{
公共班级1
{
公共字符串筛选器名称{get;set;}
公共ObservableCollection项{get;set;}
}
}

问得好。Xamarin中的数据绑定可能会令人困惑。首先,您实现选项卡式页面的方式是错误的。选项卡式页面的工作方式是创建一个根选项卡页面,在其中设置子页面。这些子页面应该是内容页面,而不是选项卡式页面

下面是该方法的一个示例实现。请注意,标题为MyStyle、MyCuts和NewCut的页面都是内容页面。唯一的选项卡式页面是根选项卡页面,其中不包含任何视图,只有包含视图的子页面

  public RootTabLayout()
  {      
        InitializeComponent();

        // TABS \\
        myCuts = new MyCuts() // ContentPage
        {
            Icon = "cut.png",
            Title = "My Cuts",
        };
        newCut = new NewCut(RootCutCamera) // ContentPage
        {
            Icon = "camera.png",
            Title = "Creator"
        };
        myStyle = new MyStyle(UserDb, RootCutCamera) // ContentPage
        {
            Icon = "bowtie.png",
            Title = "My Style"
        };
        Children.Add(MyCuts);
        Children.Add(NewCut);
        Children.Add(MyStyle);
  }
至于绑定方面,您的实际绑定代码没有问题。您只需要添加bindingcontext,以便视图知道要绑定到什么。您需要为ContentPage设置BindingContext。这将自动为所有子页面设置绑定上下文,如果您需要不同项目的不同绑定上下文,则可以为每个视图分别设置它们

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:XamarinPOC.ViewModel,assembly=YourApp.ReplaceWithLocalNamespace"
         x:Class="YourApp.ContentPage1"
         Title="Summary List"    
         BindingContext="YourApp.SalesRep.Models" // set binding context of the content page> 

有关数据绑定的更多信息:


谢谢您的回复,我正在努力,如果我有任何问题,请告诉您。嗨,您解决了问题吗?