Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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żne
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 hierarchia 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 Przegląd tworzenia interfejsów sterowania.
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 podstawowej klasy rozszerzenia 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}" ... />
Użycie w trybie szczegółowym jest często przydatne w przypadku rozszerzeń, które mają więcej niż jedną właściwość możliwą do ustawienia, albo jeśli niektóre właściwości są opcjonalne. Ponieważ DynamicResource 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ę DynamicResourceExtension.
DynamicResource jest rozszerzeniem znacznikowym. Rozszerzenia znaczników są zwykle implementowane, gdy istnieje potrzeba zmiany wartości atrybutów na inne niż wartości literalne lub nazwy procedur obsługujących, a potrzeba jest bardziej globalna, niż tylko stosowanie 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 sekcje Rozszerzenia znaczników iWPF XAML.
Zobacz także
.NET Desktop feedback