Udostępnij za pośrednictwem


ThemeDictionary, rozszerzenie znaczników

Umożliwia autorom niestandardowych kontrolek lub aplikacjom integrującym kontrolki innych firm załadowanie słowników zasobów specyficznych dla tematów do użycia w stylizacji kontrolki.

Użycie atrybutu XAML

<object property="{ThemeDictionary assemblyUri}" ... />  

Użycie elementu obiektu XAML

<object>  
  <object.property>  
    <ThemeDictionary AssemblyName="assemblyUri"/>  
  <object.property>  
<object>  

Wartości XAML

Wartość Opis
assemblyUri Jednolity identyfikator zasobu (URI) zestawu zawierającego informacje o motywie. Zazwyczaj jest to identyfikator URI pakietu, który odwołuje się do zestawu w większym pakiecie. Zasoby zestawów i identyfikatory URI pakietów upraszczają problemy z wdrażaniem. Aby uzyskać więcej informacji, zobacz URI pakietów w WPF.

Uwagi

To rozszerzenie ma wypełnić tylko jedną konkretną wartość właściwości: wartość dla ResourceDictionary.Source.

Korzystając z tego rozszerzenia, można określić pojedynczy zestaw przeznaczony wyłącznie do zasobów, który zawiera style używane tylko wtedy, gdy na systemie użytkownika jest włączony motyw Windows Aero, oraz inne style, gdy aktywny jest motyw Luna itp. Korzystając z tego rozszerzenia, zawartość słownika zasobów specyficznych dla kontrolki może być automatycznie unieważniana i ładowana ponownie, aby być specyficzna dla innego motywu, jeśli jest to wymagane.

Ciąg assemblyUri (AssemblyName wartość właściwości) stanowi podstawę konwencji nazewnictwa, która ukazuje, który słownik dotyczy danego motywu. Logika ProvideValue dla ThemeDictionary kończy konwencję, generując jednolity identyfikator zasobu (URI), który wskazuje na wariant słownika określonego motywu, znajdujący się w wstępnie skompilowanym zestawie zasobów. Opis tej konwencji lub interakcji motywu z ogólnym stylem sterowania i stylem na poziomie strony/aplikacji jako koncepcji nie jest w pełni omówiony. Podstawowym scenariuszem użycia ThemeDictionary jest określenie właściwości Source dla ResourceDictionary zadeklarowanego na poziomie aplikacji. Gdy podajesz identyfikator URI zestawu za pośrednictwem rozszerzenia ThemeDictionary, a nie jako bezpośredni identyfikator URI, logika tego rozszerzenia zapewni logikę unieważnienia, która będzie stosowana za każdym razem, gdy motyw systemowy ulegnie zmianie.

Składnia atrybutów jest najczęściej używaną składnią z tym rozszerzeniem znaczników. Token ciągu podany po identyfikatorze ThemeDictionary jest przypisany jako wartość AssemblyName w podstawowej klasie rozszerzeń ThemeDictionaryExtension.

ThemeDictionary mogą być również używane w składni elementu obiektu. W takim przypadku określenie wartości właściwości AssemblyName jest wymagane.

ThemeDictionary można również użyć w pełnej notacji atrybutu, która określa właściwość Member jako parę właściwość=wartość.

<object property="{ThemeDictionary AssemblyName=assemblyUri}" ... />  

Szczegółowe użycie jest często przydatne dla rozszerzeń, które mają więcej niż jedną konfigurowalną właściwość albo jeśli niektóre właściwości są opcjonalne. Ponieważ ThemeDictionary ma tylko jedną ustawianą właściwość, która jest wymagana, takie rozwlekłe użycie nie jest typowe.

W implementacji procesora WPF XAML obsługa tego rozszerzenia znaczników jest definiowana przez klasę ThemeDictionaryExtension.

ThemeDictionary jest rozszerzeniem znacznikowym. Rozszerzenia znaczników są zwykle implementowane, gdy istnieje potrzeba zabezpieczenia wartości atrybutów, które mają być inne niż literały lub nazwy procedur obsługi zdarzeń, a wymagania są bardziej globalne niż tylko stosowanie konwerterów typów na niektórych typach lub właściwościach. Wszystkie rozszerzenia znaczników w języku XAML używają znaków { i } w ich składni atrybutu, która jest konwencją, zgodnie z którą procesor XAML rozpoznaje, że rozszerzenie znaczników musi przetworzyć atrybut. Aby uzyskać więcej informacji, zobacz Rozszerzenia znaczników i WPF XAML.

Zobacz też