x:Subclass, dyrektywa
Modyfikuje zachowanie kompilowania znaczników XAML po udostępnieniu x:Class
. Zamiast tworzyć klasę częściową opartą na x:Class
, podana x:Class
jest tworzona jako klasa pośrednia, a następnie oczekiwana klasa pochodna będzie oparta na x:Class
.
Użycie atrybutu XAML
<object x:Class="namespace.classname" x:Subclass="subclassNamespace.subclassName">
...
</object>
Wartości XAML
Wartość | Opis |
---|---|
namespace |
Fakultatywny. Określa przestrzeń nazw CLR zawierającą classname . Jeśli określono namespace , kropka (.) oddziela namespace i classname . |
classname |
Wymagane. Określa nazwę CLR klasy częściowej, która łączy załadowany kod XAML i kod-behind dla tego XAML. Zobacz uwagi. |
subclassNamespace |
Fakultatywny. Może się różnić od namespace , jeśli każda przestrzeń nazw może rozpoznać drugą. Określa przestrzeń nazw CLR zawierającą subclassName . Jeśli określono subclassName , kropka (.) oddziela subclassNamespace i subclassName . |
subclassName |
Wymagane. Określa nazwę CLR podklasy. |
Zależności
x:Klasa Dyrektywy musi być również podana na tym samym obiekcie, a ten obiekt musi być elementem głównym produkcji XAML.
Uwagi
x:Subclass
użycie jest przeznaczone głównie dla języków, które nie obsługują deklaracji klas częściowych.
Klasa używana jako x:Subclass
nie może być klasą zagnieżdżona, a x:Subclass
musi odwoływać się do obiektu głównego, jak wyjaśniono w sekcji "Zależności".
W przeciwnym razie pojęcie x:Subclass
jest niezdefiniowane przez implementację usług XAML platformy .NET. Dzieje się tak, ponieważ zachowanie usług XAML platformy .NET nie określa ogólnego modelu programowania, za pomocą którego są połączone znaczniki XAML i kod zapasowy. Implementacje dalszych pojęć związanych z x:Class
i x:Subclass
są wykonywane przez określone struktury korzystające z modeli programowania lub modeli aplikacji w celu zdefiniowania sposobu łączenia znaczników XAML, skompilowanych znaczników i kodu opartego na clR. Każda struktura może mieć własne akcje kompilacji, które umożliwiają niektóre zachowania lub określone składniki, które muszą być uwzględnione w środowisku kompilacji. W ramach platformy akcje kompilacji mogą również różnić się w zależności od określonego języka CLR używanego dla kodu.
Uwagi dotyczące użycia platformy WPF
x:Subclass
może znajdować się w katalogu głównym strony lub w katalogu głównym Application w definicji aplikacji, która ma już x:Class
. Deklarowanie x:Subclass
na dowolnym elemenie innym niż strona lub katalog główny aplikacji albo określanie, gdzie nie istnieje x:Class
, powoduje błąd czasu kompilacji.
Tworzenie klas pochodnych, które działają poprawnie dla scenariusza x:Subclass
, jest dość złożone. Może być konieczne sprawdzenie plików pośrednich (pliki g utworzone w folderze obj projektu przez kompilację znaczników z nazwami zawierającymi nazwy plików xaml). Te pliki pośrednie mogą pomóc w ustaleniu pochodzenia niektórych konstrukcji programowania w sprzężonych klasach częściowych w skompilowanej aplikacji.
Programy obsługi zdarzeń w klasie pochodnej muszą być internal override
(Friend Overrides
w programie Microsoft Visual Basic), aby zastąpić wycinki procedur obsługi utworzonych w klasie pośredniej podczas kompilacji. W przeciwnym razie implementacje klas pochodnych ukrywają implementację klasy pośredniej (cień), a programy obsługi klasy pośredniej nie są wywoływane.
Podczas definiowania zarówno x:Class
, jak i x:Subclass
nie trzeba udostępniać żadnej implementacji dla klasy, do której odwołuje się x:Class
. Wystarczy nadać mu nazwę za pośrednictwem atrybutu x:Class
, aby kompilator miał pewne wskazówki dotyczące klasy tworzonej w plikach pośrednich (kompilator nie wybiera w tym przypadku nazwy domyślnej). Można nadać x:Class
klasie implementacji; jednak nie jest to typowy scenariusz użycia zarówno x:Class
, jak i x:Subclass
.
Zobacz też
.NET Desktop feedback