Udostępnij za pośrednictwem


StaticResource rozszerzenie znacznikowe

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 XAML

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

Użycie elementu obiektu 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 znacznikach, lub został przekazany jako parametr key podczas wywoływania ResourceDictionary.Add, jeśli zasób został utworzony w kodzie.

Uwagi

Ważny

StaticResource nie może podjąć próby wcześniejszego odniesienia się 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 ResourceDictionary są przeszukiwane. Aby uzyskać najlepsze wyniki, dostosuj strukturę słowników zasobów, aby można było uniknąć forwardowych odwołań. Jeśli nie możesz uniknąć odwołania do przodu, użyj rozszerzenia DynamicResource Markup zamiast tego.

Określony ResourceKey powinien odpowiadać istniejącemu zasobowi, zidentyfikowany za pomocą dyrektywy x:Key na jakimś poziomie w stronie, aplikacji, dostępnych motywach sterowania, zasobach zewnętrznych lub zasobach systemowych. Wyszukiwanie zasobów odbywa się w tej kolejności. Aby uzyskać więcej informacji na temat zachowania przeszukiwania zasobów dla zasobów statycznych i dynamicznych, zobacz Zasoby XAML.

Klucz zasobu może być dowolnym ciągiem zdefiniowanym w XamlName Grammar. Klucz zasobu może być również innym typem obiektu, takim jak Type. Klucz Type jest kluczowy dla sposobu, w jaki kontrolki mogą być stylowane przez motywy 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 znaczników DynamicResource.

Składnia atrybutów jest najczęściej używaną składnią z tym rozszerzeniem znaczników. Token ciągu podany po ciągu identyfikatora StaticResource jest przypisany jako wartość ResourceKey w bazowej klasie rozszerzenia StaticResourceExtension.

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

StaticResource można również użyć w szczegółowym użyciu atrybutu, który określa właściwość ResourceKey jako parę właściwość=wartość:

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

Szczegółowe użycie jest często przydatne w przypadku rozszerzeń, które mają więcej niż jedną ustawialną właściwość lub jeśli niektóre właściwości są opcjonalne. Ponieważ StaticResource ma tylko pewną właściwość możliwą do ustawienia, która jest wymagana, takie obszerne użycie nie jest typowe.

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

StaticResource jest rozszerzeniem znaczników. Rozszerzenia znaczników są zwykle implementowane, gdy istnieje potrzeba zmiany wartości atrybutów na inne niż dosłowne wartości lub nazwy obsługi, a potrzeba jest bardziej ogólna niż tylko użycie konwerterów typów na pewnych 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ż