Страница XAML по умолчанию и новая страница XAML в Xamarin Forms не идентичны

#xaml #xamarin.forms

#xaml #xamarin.forms

Вопрос:

Я новичок в Xamarin разработке. Я создал новую Xamarin XAML App(Xamarin.Forms Portable) . В переносимом проекте там, где MainPage.Xaml по умолчанию. Для создания MVVM модели я создал три новые папки- Views, ViewModels, and Models . Теперь я добавил новое MainPage.Xaml в папку Views и собирался удалить MainPage.Xaml страницу по умолчанию. Но здесь я вижу некоторую разницу на обеих страницах. У по умолчанию MainPage.Xaml есть xmlns:local="clr-namespace:Test" , а у нового MainPage.Xaml нет. Опять же, у нового MainPage.Xaml есть <Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" /> , а у стандартного нет. Скриншоты: Новая главная страница.Xaml в папке Views

Основная страница по умолчанию.Xaml

Что означает эта разметка.Почему есть разница. Нужно ли что-то менять. Могу ли я удалить главную страницу по умолчанию.Xaml или я должен скопировать его в представлениях.Нужно ли копировать разметку со страницы по умолчанию на новую. Если да, то почему? Заранее спасибо

Ответ №1:

Обе страницы идентичны и будут отображаться одинаково.

На втором есть дополнительное объявление пространства имен Xml:

 xmlns:local="clr-namespace:Test"
  

Это всего лишь объявление. Вы можете удалить ее или добавить на другую страницу без эффекта. Его цель — иметь возможность ссылаться на пользовательские представления, объявленные в текущей сборке и в пространстве имен (на этот раз в пространстве имен c #) Test , например:

 <ContentPage
    ...
    xmlns:local="clr-namespace:Test"
    x:Class="Test.MainPage">
  <local:MyAwesomeView />
</ContentPage>
  

Ответ №2:

Удивительно, что вы решили начать с Xamarin и Xamarin.Формы!

Хотя я понимаю, что у вас могут возникнуть эти вопросы, это очень базовые знания XAML. Короткий ответ: вам не нужно беспокоиться об этом.

Длинный ответ:

Причина, по которой эти страницы отличаются, заключается просто в том, что это всего лишь шаблон, и тот, кто в Xamarin создал шаблон для проекта, может быть другим человеком, чем тот, кто создал шаблон для новой страницы XAML. Поэтому они решили это по-разному. Или, может быть, у него был хороший / плохой день, кто знает.

Label На первой странице просто показано, как начать, и поэтому вы не начнете с пустого экрана.

Дополнительное пространство xmlns:local="clr-namespace:Test" имен на этой новой странице фактически избыточно, но оно уже есть, поэтому вы можете использовать классы в своем проекте.

На самом деле это эквивалент using списка в верхней части ваших классов. Поэтому всякий раз, когда вам нужно что-то из другого пространства имен, вы должны объявить это там. Поэтому, если вы создаете папку «Элементы управления», вы можете добавить атрибут xmlns:controls="clr-namespace:Test.Controls" .

Обратите внимание, как я изменил local controls , это префикс, который вы будете использовать для определения своего экземпляра. Также я добавил правильное пространство Test.Controls имен. Теперь, если вы хотите отобразить что-то на экране в вашем XAML из пространства имен controls, выполните следующие действия:

 <ContentPage xmlns:controls="clr-namespace:Test.Controls" x:Class="Test.MainPage">
  <!-- some stuff here -->
  <controls:ReusableControlHere />
</ContentPage>
  

Где ReusableControl может быть ваша собственная версия a Label Button или практически что угодно.

Комментарии:

1. Хорошо объяснено! Но Label Text={Binding MainText} . Можете ли вы сказать, что такое MainText.

2. MainText должен быть свойством типа string в вашем DataContext (вашей ViewModel)