Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Unikatowo identyfikuje elementy obiektu, aby umożliwić dostęp do utworzonego obiektu z poziomu code-behind lub ogólnego kodu. Po zastosowaniu do modelu programowania zapasowego x:Name można uznać za równoważną zmiennej zawierającej odwołanie do obiektu, co jest zwracane przez konstruktora.
Użycie atrybutu XAML
<object x:Name="XAMLNameValue".../>
Wartości XAML
| Termin | Description |
|---|---|
| XAMLNameValue | Ciąg zgodny z ograniczeniami gramatyki XamlName. |
Gramatyka XamlName
Poniżej przedstawiono normatyczną gramatykę dla ciągu, który jest używany jako klucz w tej implementacji XAML:
XamlName ::= NameStartChar (NameChar)*
NameStartChar ::= LetterCharacter | '_'
NameChar ::= NameStartChar | DecimalDigit
LetterCharacter ::= ('a'-'z') | ('A'-'Z')
DecimalDigit ::= '0'-'9'
CombiningCharacter::= none
- Znaki są ograniczone do dolnego zakresu ASCII, a dokładniej do alfabetu rzymskiego wielkie i małe litery, cyfry i znak podkreślenia (_).
- Zakres znaków Unicode nie jest obsługiwany.
- Nazwa nie może zaczynać się od cyfry. Niektóre implementacje narzędzi poprzedzają ciąg znakiem podkreślenia (_), jeśli użytkownik dostarcza cyfrę jako znak początkowy, lub narzędzie autogeneruje wartości x:Name na podstawie innych wartości zawierających cyfry.
Uwagi
Określona nazwa x: staje się nazwą pola utworzonego w kodzie źródłowym podczas przetwarzania kodu XAML, a to pole zawiera odwołanie do obiektu. Proces tworzenia tego pola jest wykonywany przez kroki docelowe programu MSBuild, które są również odpowiedzialne za dołączenie do klas częściowych dla pliku XAML i jego kodu. To zachowanie nie musi być określone przez język XAML; jest to konkretna implementacja stosowana w programowaniu platformy uniwersalnej systemu Windows (UWP), które stosuje x:Name w modelach programowania i aplikacji.
Każda zdefiniowana nazwa x: musi być unikatowa w obrębie zakresu nazw XAML. Ogólnie rzecz biorąc, zakres nazw XAML jest definiowany na poziomie elementu głównego załadowanej strony i zawiera wszystkie elementy w ramach tego elementu na jednej stronie XAML. Dodatkowe zakresy nazw XAML są definiowane przez dowolny szablon kontrolki lub szablon danych zdefiniowany na tej stronie. W czasie wykonywania jest tworzony inny zakres nazw XAML dla korzenia drzewa obiektów utworzonego z zastosowanego szablonu kontrolki, a także przez drzewa obiektów utworzone z wywołania XamlReader.Load. Aby uzyskać więcej informacji, zobacz XAML namescopes (Zakresy nazw XAML).
Narzędzia projektowe często automatycznie generują wartości x:Name dla elementów podczas ich wprowadzania do powierzchni projektowej. Schemat automatycznego generowania różni się w zależności od używanego projektanta, ale typowym schematem jest wygenerowanie ciągu rozpoczynającego się od nazwy klasy, która tworzy kopię zapasową elementu, po którym następuje zaawansowana liczba całkowita. Jeśli na przykład wprowadzisz pierwszy element Button do projektanta, w XAML ten element ma wartość atrybutu x:Name "Button1".
X:Nazwa nie może być ustawiona w składni elementu właściwości XAML lub w kodzie przy użyciu metody SetValue. x:Nazwa można ustawić tylko przy użyciu składni atrybutu XAML dla elementów.
Uwaga / Notatka
W szczególności w przypadku aplikacji C++/CX pole zapasowe odwołania x:Name nie jest tworzone dla elementu głównego pliku lub strony XAML. Jeśli musisz odwołać się do obiektu głównego z kodu języka C++, użyj innych interfejsów API lub przechodzenia drzewa. Na przykład można wywołać metodę FindName dla znanego nazwanego elementu podrzędnego, a następnie wywołać metodę Parent.
x:Name i inne właściwości nazw
Niektóre typy używane w języku XAML mają również właściwość o nazwie Name. Na przykład FrameworkElement.Name i TextElement.Name.
Jeśli Name jest dostępna jako ustawialna właściwość elementu, Name i x:Name mogą być używane zamiennie w języku XAML, ale wystąpi błąd, jeśli oba atrybuty są określone na jednym elemencie. Istnieją również przypadki, w których istnieje właściwość Name , ale jest tylko do odczytu (na przykład VisualState.Name). Jeśli tak jest, zawsze używasz x:Name, aby nazwać ten element w języku XAML, a Name tylko do odczytu istnieje w scenariuszu kodu mniej typowego.
UwagaFrameworkElement.Name zazwyczaj nie należy używać jako sposobu zmiany wartości pierwotnie ustawionych przez x:Name, chociaż istnieją pewne scenariusze, które są wyjątkami od tej reguły ogólnej. W typowych scenariuszach tworzenie i definiowanie przestrzeni nazw XAML jest operacją przetwarzaną przez procesor XAML. Modyfikowanie FrameworkElement.Name w czasie wykonywania może spowodować niespójne dopasowanie nazw przestrzeni nazw XAML i pól prywatnych, co jest trudne do śledzenia w kodzie-behind.
x:Name i x:Key
x:Name można zastosować jako atrybut do elementów w obiekcie ResourceDictionary w celu działania jako zamiennik atrybutu x:Key. (Jest to reguła, że wszystkie elementy w obiekcie ResourceDictionary muszą mieć atrybut x:Key lub x:Name). Jest to typowe w przypadku animacji opartych na scenorysach. Aby uzyskać więcej informacji, zobacz sekcję Dokumentacja zasobów ResourceDictionary i odwołania do zasobów XAML.
Windows developer