Xamarin表格带有Mvvmcross的标签页

时间:2016-10-22 01:32:51

标签: android xamarin visual-studio-2015 xamarin.forms mvvmcross

我遇到一个奇怪的问题,当我将内容页面设置为启动页面时,Xamarin Forms App工作正常。如果我将TabbedPage设置为启动,并将相同的ContentPage设置为TabbedPage的子项,则它不会显示/ data-bind ContentPage。没有错误。我有什么想法?这是我的TabbedPage视图模型。

using MvvmCross.Core.ViewModels;
using System.Windows.Input;

namespace Company.Mobile.ViewModels
{
    public class TabbedMainViewModel
        : MvxViewModel
    {

    }
}

XAML:

<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:forms="using:Xamarin.Forms"         
             xmlns:local="clr-namespace:company.Mobile.Pages;assembly=company.Mobile"   
             x:Class="company.Mobile.Pages.TabbedMainPage"
            Title="Title">
  <TabbedPage.Children>
    <local:HomePage/>
    <local:MainPage/>
    <local:ResourcesPage/>
    <local:ContactPage/>    
  </TabbedPage.Children>
</TabbedPage>

2 个答案:

答案 0 :(得分:1)

经过大量的试验和错误以及社区的帮助,这是有效的。

将BindingContext设置为ContentPage代码隐藏C#,如下所示:

    public partial class HomePage : ContentPage
    {
        public HomePage()
        {
            InitializeComponent();
            var svc = Mvx.Resolve<IMobileService>();
            BindingContext = new HomeViewModel(svc);
        }    
    }

在HomeViewModel构造函数中获取您的数据,如下所示:

public class HomeViewModel : MvxViewModel

    {
        private readonly IMobileService service;

        public HomeViewModel(IMobileService service)
        {
            this.service = service;
            //Content = service.GetContent; //Get your data
        }
     }

答案 1 :(得分:0)

我想说,您可以通过为XAML中每个选项卡式页面添加此内联属性来简化此操作,例如主页应为BindingContext="{Binding HomePageViewModel}"