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.