Xamarin Forms 中缺少默认构造函数错误

Missing Default Constructor error in Xamarin Forms

我不知道如何解决这个错误。它在 MainPage.xaml 文件中显示 "Missing Default Constructor"。非常感谢您的帮助!

MainPage.xaml :包含导航菜单。

<?xml version="1.0" encoding="utf-8"?>
<TabbedPage
    xmlns:tasks="clr-namespace:TaskApp.Tasks"
    xmlns:notifications="clr-namespace:TaskApp.Notifications"
    xmlns:account="clr-namespace:TaskApp.Account"
    xmlns="http://xamarin.com/schemas/2014/forms" 
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
    xmlns:d="http://xamarin.com/schemas/2014/forms/design" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="TaskApp.MainPage">

    <NavigationPage Title="Tasks" Icon="tasks.png">
        <x:Arguments>
            <tasks:TaskList /> // <-- THIS IS WHERE THE ERROR OCCURS
        </x:Arguments>
    </NavigationPage>

    <NavigationPage Title="Notifications" Icon="notification.png">
        <x:Arguments>
            <notifications:NotificationList />
        </x:Arguments>
    </NavigationPage>

    <NavigationPage Title="Account" Icon="account.png">
        <x:Arguments>
            <account:AccountPage />
        </x:Arguments>
    </NavigationPage>
</TabbedPage>

TaskList.xaml.cs : 是显示任务列表的代码隐藏文件

namespace TaskApp.Tasks
{
    public partial class TaskList : ContentPage
    {
        public TaskList(string queue)
        {
            InitializeComponent();

            if (queue != null)
                queueSlug = queue;

            NavigationPage.SetBackButtonTitle(this, "Back");
        }

        //Overrides the back button on Android and Window devices
        protected override bool OnBackButtonPressed()
        {
            return true;
        }
    }
}

TaskQueues.xaml.cs :是代码查找文件,其中包含 select 特定任务队列的弹出窗口,例如 "Uncompleted tasks, Completed tasks, Overdue tasks, etc." 并且它将数据传递给 TaskList.xaml.cs

namespace TaskApp.Popups
{
    public partial class TaskQueues : PopupPage
    {
        private const string Url = "...";
        private HttpClient _client = new HttpClient();
        private ObservableCollection<Queues> _queues;

        void Handle_SelectedQueue(object sender, Xamarin.Forms.SelectedItemChangedEventArgs e)
        {
            var queue = e.SelectedItem as Queues;
            PopupNavigation.Instance.PopAsync(true);
            new NavigationPage(new TaskList(queue.Slug));
        }

        public TaskQueues()
        {
            InitializeComponent();
        }

        protected override async void OnAppearing()
        {
            var content = await _client.GetStringAsync(Url);
            var queues = JsonConvert.DeserializeObject<List<Queues>>(content);

            _queues = new ObservableCollection<Queues>(queues);
            taskQueues.ItemsSource = _queues;

            // Adjusts the list height and scrollview height
            int i = _queues.Count;
            int heightRowList = 50;
            i = (i * heightRowList);
            taskQueues.HeightRequest = i;

            if (i > 400)
                taskQueuesScrollView.HeightRequest = 400;

            base.OnAppearing();
        }

        private void ClosePopup(object sender, EventArgs e)
        {
            PopupNavigation.Instance.PopAsync(true);
        }
    }
}

TaskList 需要在 XAML

中使用默认(无参数)构造函数
public partial class TaskList : ContentPage
{
    public TaskList()
    {
        InitializeComponent();

        NavigationPage.SetBackButtonTitle(this, "Back");
    }

    public TaskList(string queue)
    {
        InitializeComponent();

        if (queue != null)
            queueSlug = queue;

        NavigationPage.SetBackButtonTitle(this, "Back");
    }