Xaml Ошибка при создании нашей собственной страницы контента - PullRequest
4 голосов
/ 11 марта 2019

Я создаю собственную страницу контента под названием BaseContentpage.Когда я позвонил со своей страницы XAML.Это всегда дает ошибку времени компиляции.оно не выдается, когда я запускаю приложение, оно работает гладко.Я не могу понять проблему.

Моя базовая страница содержимого

  public abstract class BaseContentPage : ContentPage
{
    public readonly BaseViewModel BaseViewModel;

    protected bool _isNavigated = false;

    public BaseContentPage(BaseViewModel baseViewModel)
    {
        BaseViewModel = baseViewModel;
    }

    public abstract void Navigate(SelectedItemChangedEventArgs e);
    protected abstract override void OnAppearing();
    protected override void OnDisappearing()
    {
        _isNavigated = true;
    }
}

Моя XAML-страница

 <views:BaseContentPage
         xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="DipsDemoXaml.Views.PatientListViewPage"
         xmlns:views="clr-namespace:DipsDemoXaml.Views;assembly=DipsDemoXaml.Views"
         Title="{Binding PatientWard.Name}">

она выдает ошибку времени компиляции

ОшибкаXLS0414 Тип 'views: BaseContentPage' не найден.Убедитесь, что вы не пропустили ссылку на сборку и что все ссылочные сборки были собраны.DipsDemoXaml PatientListViewPage.xaml

Как исправить эту ошибку времени компиляции

1 Ответ

2 голосов
/ 11 марта 2019

Прежде всего вы можете добавить конструктор по умолчанию:

 public BaseContentPage () :base()
 {

 }

Поскольку Xaml по умолчанию имеет доступ к этому конструктору, также вызовите конструктор base(), поскольку он инициализирует конструктор базового класса. (Не обязательно, но в моем понимании это хорошая практика, в основном, когда у вас есть параметр конструктора, с помощью которого конструктор базового класса должен инициализировать базовый класс.)

Теперь, так как XAML не может найти это, предполагается, что вы, возможно, не скомпилировали свой проект должным образом или не имели правильной ссылки на сборку.

Отсюда и ошибка

Тип 'views: BaseContentPage' не найден. Убедитесь, что вы не пропустили ссылку на сборку и что все ссылочные сборки были собраны. DipsDemoXaml PatientListViewPage.xaml

Во-вторых, абстрактные методы объявляются без какой-либо реализации. Они объявлены с целью обеспечения реализации дочерним классом. Они должны быть объявлены в абстрактном классе. Класс, объявленный как абстрактный, может включать или не включать абстрактные методы. Они созданы с целью быть суперклассом. Поэтому я лично не думаю, что вашему сценарию нужен абстрактный класс (я могу ошибаться).

Удачи, В случае запросов, не стесняйтесь вернуться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...