Przestrzenie nazw XAML w programie Xamarin.Forms

Język XAML używa atrybutu XML xmlns dla deklaracji przestrzeni nazw. W tym artykule przedstawiono składnię przestrzeni nazw XAML i pokazano, jak zadeklarować przestrzeń nazw XAML w celu uzyskania dostępu do typu.

Omówienie

Istnieją dwie deklaracje przestrzeni nazw XAML, które są zawsze w elemecie głównym pliku XAML. Pierwszy definiuje domyślną przestrzeń nazw, jak pokazano w poniższym przykładzie kodu XAML:

xmlns="http://xamarin.com/schemas/2014/forms"

Domyślna przestrzeń nazw określa, że elementy zdefiniowane w pliku XAML bez prefiksu odwołują się do Xamarin.Forms klas, takich jak ContentPage.

Druga deklaracja przestrzeni nazw używa prefiksu x , jak pokazano w poniższym przykładzie kodu XAML:

xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

Język XAML używa prefiksów do deklarowania przestrzeni nazw innych niż domyślne z prefiksem używanym podczas odwoływania się do typów w przestrzeni nazw. Deklaracja x przestrzeni nazw określa, że elementy zdefiniowane w XAML z prefiksem x są używane dla elementów i atrybutów, które są wewnętrzne dla XAML (w szczególności specyfikacji XAML 2009).

W poniższej x tabeli przedstawiono atrybuty przestrzeni nazw obsługiwane przez program Xamarin.Forms:

Konstrukcja opis
x:Arguments Określa argumenty konstruktora dla konstruktora innego niż domyślny lub dla deklaracji obiektu metody fabryki.
x:Class Określa przestrzeń nazw i nazwę klasy dla klasy zdefiniowanej w języku XAML. Nazwa klasy musi być zgodna z nazwą klasy pliku za pomocą kodu. Należy pamiętać, że ta konstrukcja może być wyświetlana tylko w elemecie głównym pliku XAML.
x:DataType Określa typ obiektu, z którego będzie powiązany element XAML i jego elementy podrzędne.
x:FactoryMethod Określa metodę fabryki, która może służyć do inicjowania obiektu.
x:FieldModifier Określa poziom dostępu dla wygenerowanych pól dla nazwanych elementów XAML.
x:Key Określa unikatowy klucz zdefiniowany przez użytkownika dla każdego zasobu w obiekcie ResourceDictionary. Wartość klucza służy do pobierania zasobu XAML i jest zwykle używana jako argument rozszerzenia StaticResource znaczników.
x:Name Określa nazwę obiektu środowiska uruchomieniowego dla elementu XAML. Ustawienie x:Name jest podobne do deklarowania zmiennej w kodzie.
x:TypeArguments Określa argumenty typu ogólnego konstruktora typu ogólnego.

Aby uzyskać więcej informacji na temat atrybutu x:DataType , zobacz Skompilowane powiązania. Aby uzyskać więcej informacji na temat atrybutu x:FieldModifier , zobacz Modyfikatory pól. Aby uzyskać więcej informacji na temat x:Arguments atrybutów i x:FactoryMethod , zobacz Przekazywanie argumentów w języku XAML. Aby uzyskać więcej informacji na temat atrybutu x:TypeArguments , zobacz Generics in XAML with Xamarin.Forms.

Uwaga

Oprócz atrybutów przestrzeni nazw wymienionych powyżej obejmuje również rozszerzenia znaczników, Xamarin.Forms które mogą być używane za pomocą prefiksu x przestrzeni nazw. Aby uzyskać więcej informacji, zobacz Korzystanie z rozszerzeń znaczników XAML.

W języku XAML deklaracje przestrzeni nazw dziedziczą z elementu nadrzędnego na element podrzędny. W związku z tym podczas definiowania przestrzeni nazw w elemercie głównym pliku XAML wszystkie elementy w tym pliku dziedziczą deklarację przestrzeni nazw.

Deklarowanie przestrzeni nazw dla typów

Do typów można odwoływać się w języku XAML, deklarując przestrzeń nazw XAML z prefiksem, z deklaracją przestrzeni nazw określającą nazwę przestrzeni nazw środowiska uruchomieniowego języka wspólnego (CLR) i opcjonalnie nazwę zestawu. Jest to osiągane przez zdefiniowanie wartości dla następujących słów kluczowych w deklaracji przestrzeni nazw:

  • clr-namespace: lub using: — przestrzeń nazw CLR zadeklarowana w zestawie, który zawiera typy do uwidocznienia jako elementy XAML. To słowo kluczowe jest wymagane.
  • assembly = — zestaw zawierający przywołyną przestrzeń nazw CLR. Ta wartość jest nazwą zestawu bez rozszerzenia pliku. Ścieżka do zestawu powinna zostać ustanowiona jako odwołanie w pliku projektu zawierającym plik XAML, który będzie odwoływać się do zestawu. To słowo kluczowe można pominąć, jeśli wartość clr-namespace znajduje się w tym samym zestawie co kod aplikacji odwołujące się do typów.

Należy pamiętać, że znak oddzielający clr-namespace token lub using od jego wartości jest dwukropkiem, natomiast znak oddzielający assembly token od jego wartości jest znakiem równości. Znak używany między dwoma tokenami jest średnikiem.

Poniższy przykład kodu przedstawia deklarację przestrzeni nazw XAML:

<ContentPage ... xmlns:local="clr-namespace:HelloWorld" ...>
  ...
</ContentPage>

Alternatywnie można to napisać jako:

<ContentPage ... xmlns:local="using:HelloWorld" ...>
  ...
</ContentPage>

Prefiks local jest konwencją używaną do wskazywania, że typy w przestrzeni nazw są lokalne dla aplikacji. Alternatywnie, jeśli typy znajdują się w innym zestawie, nazwa zestawu powinna być również zdefiniowana w deklaracji przestrzeni nazw, jak pokazano w poniższym przykładzie kodu XAML:

<ContentPage ... xmlns:behaviors="clr-namespace:Behaviors;assembly=BehaviorsLibrary" ...>
  ...
</ContentPage>

Prefiks przestrzeni nazw jest następnie określany podczas deklarowania wystąpienia typu z zaimportowanej przestrzeni nazw, jak pokazano w poniższym przykładzie kodu XAML:

<ListView ...>
  <ListView.Behaviors>
    <behaviors:EventToCommandBehavior EventName="ItemSelected" ... />
  </ListView.Behaviors>
</ListView>

Aby uzyskać informacje na temat definiowania niestandardowego schematu przestrzeni nazw, zobacz Niestandardowe schematy przestrzeni nazw XAML.

Podsumowanie

W tym artykule przedstawiono składnię przestrzeni nazw XAML i pokazano, jak zadeklarować przestrzeń nazw XAML w celu uzyskania dostępu do typu. Język XAML używa atrybutu xmlns XML dla deklaracji przestrzeni nazw, a typy można odwoływać się w języku XAML, deklarując przestrzeń nazw XAML z prefiksem.