DynamicResource rozszerzenie składni
Zawiera wartość dla dowolnego atrybutu właściwości XAML przez odroczenie tej wartości jako odwołania do zdefiniowanego zasobu. Zachowanie wyszukiwania dla tego zasobu jest analogiczne do wyszukiwania w czasie wykonywania.
Użycie atrybutu XAML
<object property="{DynamicResource key}" ... />
Użytkowanie elementu właściwości XAML
<object>
<object.property>
<DynamicResource 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 utworzono w znacznikach lub podano jako parametr key podczas wywoływania ResourceDictionary.Add, jeśli zasób utworzono w kodzie. |
Uwagi
DynamicResource
utworzy wyrażenie tymczasowe podczas początkowej kompilacji, a tym samym odroczyć wyszukiwanie zasobów, dopóki żądana wartość zasobu nie będzie rzeczywiście wymagana w celu skonstruowania obiektu. Może to być potencjalnie po załadowaniu strony XAML. Wartość zasobu zostanie znaleziona na podstawie wyszukiwania klucza dla wszystkich aktywnych słowników zasobów rozpoczynających się od bieżącego zakresu strony i zostanie zastąpiona wyrażeniem zastępczym z kompilacji.
Ważny
Jeśli chodzi o pierwszeństwo właściwości zależności, wyrażenie DynamicResource
jest równoważne pozycji, w której jest stosowane odwołanie do zasobów dynamicznych. Jeśli ustawisz wartość lokalną dla właściwości, która wcześniej miała wyrażenie DynamicResource
jako wartość lokalną, DynamicResource
zostanie całkowicie usunięta. Aby uzyskać szczegółowe informacje, zobacz pierwszeństwo wartości właściwości zależności .
Niektóre scenariusze dostępu do zasobów są szczególnie odpowiednie dla DynamicResource
, a nie StaticResource Markup Extension. Zobacz zasoby XAML, aby zapoznać się z omówieniem względnych zalet i wpływu na wydajność DynamicResource
i StaticResource
.
Określona ResourceKey powinna odpowiadać istniejącemu zasobowi zdefiniowanemu przez dyrektywę x:Key na określonym poziomie w twojej stronie, aplikacji, dostępnych motywach kontrolnych i zasobach zewnętrznych lub systemowych, a zasób będzie wyszukiwany w tej kolejności. Aby uzyskać więcej informacji na temat wyszukiwania zasobów statycznych i dynamicznych, zobacz zasoby XAML.
Klucz zasobu może być dowolnym ciągiem zdefiniowanym w XamlName Grammar. Klucz zasobu może mieć także formę innych typów obiektów, takich jak Type. Klucz Type odgrywa fundamentalną rolę w tym, jak elementy sterujące mogą być stylowane przez motywy. Aby uzyskać więcej informacji, zobacz Omówienie tworzenia kontrolek.
Interfejsy API do wyszukiwania wartości zasobów, takich jak FindResource, są zgodne z tą samą logiką wyszukiwania zasobów, która jest używana przez DynamicResource
.
Alternatywnym sposobem deklaratywnego odwoływania się do zasobu jest StaticResource Markup Extension.
Składnia atrybutów jest najczęściej używaną składnią z tym rozszerzeniem znaczników. Token ciągu podany po identyfikatorze DynamicResource
jest przypisany jako wartość ResourceKey dla rozszerzonej klasy bazowej DynamicResourceExtension.
DynamicResource
można użyć w składni elementu obiektu. W takim przypadku określenie wartości właściwości ResourceKey jest wymagane.
DynamicResource
można również użyć w rozbudowanym zastosowaniu atrybutu, który określa właściwość ResourceKey jako parę właściwość=wartość.
<object property="{DynamicResource ResourceKey=key}" ... />
Częściowe wykorzystywanie jest często przydatne w przypadku rozszerzeń, które mają więcej niż jedną konfigurowalną właściwość lub gdy niektóre właściwości są opcjonalne. Ponieważ DynamicResource
ma tylko jedną właściwość ustawialną, która jest wymagana, to rozbudowane użycie nie jest typowe.
W implementacji procesora WPF XAML obsługa tego rozszerzenia znaczników jest definiowana przez klasę DynamicResourceExtension.
DynamicResource
jest rozszerzeniem znaczników. Rozszerzenia znaczników są zwykle implementowane, gdy istnieje potrzeba modyfikacji wartości atrybutów, które mają być inne zamiast wartości dosłownych lub nazw procedur obsługi, a potrzeba ma charakter bardziej ogólny niż tylko zastosowanie konwerterów typów dla określonych typów lub właściwości. 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ż
- Zasoby XAML
- Zasoby i Kodu
- x:Key Dyrektywy
- XAML w WPF
- rozszerzenia znaczników i WPF XAML
- Rozszerzenie znaczników StaticResource
- rozszerzenia znaczników i WPF XAML
.NET Desktop feedback