Ошибка конструктора по умолчанию в формах Xamarin - PullRequest
0 голосов
/ 24 марта 2020

У меня проблемы с поиском решения этой ошибки. В файле MainPage.xaml указано «отсутствует конструктор по умолчанию». Буду признателен за помощь!

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 : это файл с кодом, который содержит всплывающее окно для выбора определенной c очереди задач, такой как «Незавершенные задачи, Завершенные задачи, Просроченные задачи и т. Д. c». и он передаст данные в 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);
        }
    }
}

1 Ответ

0 голосов
/ 24 марта 2020

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");
    }
...