Xamarin xaml стандарты кодирования - PullRequest
0 голосов
/ 07 ноября 2019

Я самоучка Ксамарин. Я начал изучать это из учебника Miscrosoft на их веб-сайте. И они предполагают, что код xaml будет выглядеть так:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:minWidth="25px"
    android:minHeight="25px">

    <Button
        android:text="Add New Recepie"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/generalAddButton"
        android:bufferType="normal" />
    <ListView
        android:minWidth="25px"
        android:minHeight="25px"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/recepeListView" />
</LinearLayout> 

Но когда я смотрю некоторые видео на Lynda.com, я предлагаю стиль кода

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Paperboy.Pages.ListViewPage1"
             Title="ListView">
  <ListView Margin="20" ItemsSource="{Binding ItemsGrouped}"
            ItemTapped="Handle_ItemTapped"
            ItemSelected="Handle_ItemSelected"
            HasUnevenRows="true"
            GroupShortNameBinding="{Binding Key}"
            IsGroupingEnabled="true"
            GroupDisplayBinding="{Binding Key}"
            IsPullToRefreshEnabled="true"
            CachingStrategy="RecycleElement"
            IsRefreshing="{Binding IsBusy, Mode=OneWay}"
            RefreshCommand="{Binding RefreshDataCommand}">
    <ListView.Header>
      <StackLayout Padding="10" 
                   Orientation="Horizontal"
                   HorizontalOptions="FillAndExpand"
                   BackgroundColor="#dadada">
        <Label Text="Header"
               HorizontalTextAlignment="Center"
               HorizontalOptions="FillAndExpand"
               TextColor="Black"
               FontAttributes="Bold"/>
      </StackLayout>
    </ListView.Header>
    <!--Built in Cells-->
    <ListView.ItemTemplate>
      <DataTemplate>
        <TextCell Text="{Binding Text}"
                  Detail="{Binding Detail}"/>
      </DataTemplate>

Большая разница заключается в связывании междукод и пользовательский интерфейс. Microsoft использует нотацию «+ id / ID», а люди из Lynda используют нотацию «x: ID» и «{Binding ID}». Что является более правильным / общим / полезным в реальном мире? Особенно, если я хочу загрузить некоторые предопределенные шаблоны xaml пользовательского интерфейса.

1 Ответ

3 голосов
/ 07 ноября 2019

Ваш первый пример предназначен для Xamarin Android Макет пользовательского интерфейса (НЕ XAML), в то время как ваш второй пример - Xamarin Forms XAML. Это две совершенно разные вещи.

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/xaml-basics/

...