StaticResource — Rozszerzenie znaczników

Udostępnia wartość dla dowolnego atrybutu właściwości XAML, wyszukując odwołanie do już zdefiniowanego zasobu. Zachowanie wyszukiwania dla tego zasobu jest analogiczne do wyszukiwania w czasie ładowania, które będzie wyszukiwać zasoby, które zostały wcześniej załadowane z znaczników bieżącej strony XAML, a także innych źródeł aplikacji, i spowoduje wygenerowanie tej wartości zasobu jako wartości właściwości w obiektach czasu wykonywania.

Użycie atrybutu języka XAML

<object property="{StaticResource key}" ... />  

Użycie elementu obiektu języka XAML

<object>  
  <object.property>  
<StaticResource ResourceKey="key" ... />  
  </object.property>  
</object>  

Wartości XAML

Wartość Opis
key Klucz żądanego zasobu. Ten klucz został początkowo przypisany przez dyrektywę x:Key, jeśli zasób został utworzony w znaczniku lub został podany jako key parametr podczas wywoływaniaResourceDictionary.Add, jeśli zasób został utworzony w kodzie.

Uwagi

Ważne

Element StaticResource nie może podjąć próby przekazania odwołania do zasobu, który jest zdefiniowany leksykalnie dalej w pliku XAML. Próba wykonania tej czynności nie jest obsługiwana, a nawet jeśli takie odwołanie nie zakończy się niepowodzeniem, próba odwołania do przodu spowoduje naliczenie kary za wydajność czasu ładowania, gdy wewnętrzne tabele skrótów reprezentujące element ResourceDictionary są przeszukiwane. Aby uzyskać najlepsze wyniki, dostosuj kompozycję słowników zasobów, tak aby można było uniknąć przekazywania odwołań. Jeśli nie możesz uniknąć odwołania do przodu, zamiast tego użyj rozszerzenia DynamicResource Markup.

Określony ResourceKey powinien odpowiadać istniejącemu zasobowi, identyfikowane z dyrektywą x:Key na pewnym poziomie strony, aplikacji, dostępnych motywów kontroli i zasobów zewnętrznych lub zasobów systemowych. Wyszukiwanie zasobów odbywa się w tej kolejności. Aby uzyskać więcej informacji na temat zachowania wyszukiwania zasobów dla zasobów statycznych i dynamicznych, zobacz Zasoby XAML.

Klucz zasobu może być dowolnym ciągiem zdefiniowanym w gramatyce XamlName. Klucz zasobu może być również innymi typami obiektów, takimi jak Type. Type Kluczem jest to, jak kontrolki mogą być stylowane według motywów, za pomocą niejawnego klucza stylu. Aby uzyskać więcej informacji, zobacz Omówienie tworzenia kontrolek.

Alternatywnym sposobem deklaratywnego odwoływania się do zasobu jest rozszerzenie DynamicResource Markup.

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

StaticResource można używać w składni elementu obiektu. W takim przypadku określenie wartości ResourceKey właściwości jest wymagane.

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

<object property="{StaticResource ResourceKey=key}" ... />  

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ż StaticResource 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ę StaticResourceExtension .

StaticResource 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ż