Udostępnij za pośrednictwem


ThemeDictionary — Rozszerzenie znaczników

Umożliwia autorom lub aplikacjom niestandardowym kontrolki integrujące kontrolki innych firm w celu załadowania słowników zasobów specyficznych dla motywu do użycia w stylu kontrolki.

Użycie atrybutu języka XAML

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

Użycie elementu obiektu języka 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 Pack URIs in WPF (Pakiety URI w WPF).

Uwagi

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

Za pomocą tego rozszerzenia można określić pojedynczy zestaw tylko do zasobów, który zawiera niektóre style do użycia tylko wtedy, gdy motyw Windows Aero jest stosowany do systemu użytkownika, inne style tylko wtedy, gdy motyw Luna jest aktywny itd. 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 identyfikuje słownik, który ma zastosowanie do określonego motywu. Logika ProvideValue do ThemeDictionary ukończenia konwencji przez wygenerowanie identyfikatora URI (uniform resource identifier), który wskazuje wariant słownika określonego motywu, jak zawarto w wstępnie skompilowanego zestawu 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 Source właściwości zadeklarowanej ResourceDictionary na poziomie aplikacji. Po podaniu identyfikatora URI dla zestawu za pośrednictwem ThemeDictionary rozszerzenia, a nie jako bezpośredniego identyfikatora URI, logika rozszerzenia zapewni logikę unieważnienia, która ma zastosowanie za każdym razem, gdy motyw systemowy ulegnie zmianie.

Składnią atrybutu jest składnia najczęściej używana z tym rozszerzeniem znacznika. Token ciągu podany po przypisaniu ciągu identyfikatora ThemeDictionary jako AssemblyName wartości podstawowej ThemeDictionaryExtension klasy rozszerzenia.

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

ThemeDictionary Można również użyć w pełnym użyciu atrybutu, który określa Member właściwość jako parę property=value:

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

Szczegółowe definicje są często przydatne w rozszerzeniach zawierających więcej niż jedną konfigurowalną właściwość albo gdy niektóre właściwości są opcjonalne. Ponieważ ThemeDictionary ma tylko jedną właściwość settable, która jest wymagana, to pełne użycie nie jest typowe.

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

ThemeDictionary to rozszerzenie znaczników. Rozszerzenia znaczników są zazwyczaj implementowane w sytuacji, gdy istnieje wymóg, aby wartości atrybutów były wyprowadzane w postaci innej niż wartości literałów lub nazwy programów obsługi, a wymóg ma charakter bardziej globalny niż zwykłe umieszczenie konwerterów typów w 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ż