Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Udostępnia wartość dla dowolnego atrybutu XAML, oceniając odwołanie do już zdefiniowanego zasobu. Zasoby są definiowane w elemencie ResourceDictionary, a użycie staticResource odwołuje się do klucza tego zasobu w elemencie ResourceDictionary.
Użycie atrybutu XAML
<object property="{StaticResource key}" .../>
Wartości XAML
| Termin | Description |
|---|---|
| klucz | Klucz zasobu, o który zażądano. Ten klucz jest początkowo przypisywany przez ResourceDictionary. Klucz zasobu może być dowolnym ciągiem zdefiniowanym w gramatyce XamlName. |
Uwagi
StaticResource to technika uzyskiwania wartości atrybutu XAML zdefiniowanego w innym miejscu w słowniku zasobów XAML. Wartości mogą być umieszczane w słowniku zasobów, ponieważ mają być współużytkowane przez wiele wartości właściwości lub dlatego, że słownik zasobów XAML jest używany jako technika pakowania lub faktorowania XAML. Przykładem techniki pakowania w XAML jest słownik motywów dla elementu sterującego. Innym przykładem są scalone słowniki zasobów używane do zastępowania zasobów.
StaticResource przyjmuje jeden argument, który określa klucz żądanego zasobu. Klucz zasobu jest zawsze ciągiem znaków w Windows Runtime XAML. Aby uzyskać więcej informacji na temat sposobu początkowego określenia klucza zasobu, zobacz atrybut x:Key.
Reguły, za pomocą których element StaticResource jest rozpoznawany jako element w słowniku zasobów, nie są opisane w tym temacie. To zależy od tego, czy odwołanie i zasób istnieją w szablonie, czy scalone słowniki zasobów są używane itd. Aby uzyskać więcej informacji na temat definiowania zasobów i prawidłowego używania ResourceDictionary, w tym przykładowego kodu, zobacz ResourceDictionary i referencje zasobów XAML.
WażneStaticResource nie powinien próbować odwoływać się do zasobu, który jest zdefiniowany później leksykalnie w pliku XAML. Próba wykonania tej czynności nie jest obsługiwana. Nawet jeśli odwołanie do przodu nie kończy się niepowodzeniem, próba utworzenia go niesie ze sobą karę za wydajność. Aby uzyskać najlepsze rezultaty, dostosuj układ słowników zasobów, aby uniknąć odwołań w przód.
Próba przypisania StaticResource do klucza, który nie może zostać rozwiązany, rzuca wyjątkiem analizy XAML w trakcie wykonywania. Narzędzia projektowe mogą również oferować ostrzeżenia lub błędy.
W implementacji procesora XAML środowiska uruchomieniowego systemu Windows nie ma reprezentacji klasy zapasowej dla funkcji StaticResource . StaticResource jest wyłącznie do użycia w języku XAML. Najbliższym odpowiednikiem w kodzie jest użycie interfejsu API kolekcji klasy ResourceDictionary, na przykład przez wywołanie metody Contains lub TryGetValue.
{ThemeResource} rozszerzenie znaczników jest podobnym rozszerzeniem znaczników, które odwołuje się do nazwanych zasobów w innej lokalizacji. Różnica polega na tym, że rozszerzenie znaczników {ThemeResource} ma możliwość zwracania różnych zasobów w zależności od aktywnego motywu systemowego. Aby uzyskać więcej informacji, zobacz rozszerzenie znaczników {ThemeResource}.
StaticResource to rozszerzenie znaczników. Rozszerzenia znaczników są zwykle wdrażane, gdy istnieje potrzeba przetworzenia wartości atrybutów, aby były inne niż wartości dosłowne lub nazwy procedur obsługi lub funkcji, a potrzeba ta jest bardziej globalna niż tylko zastosowanie konwerterów typów do określonych typów lub właściwości. Wszystkie rozszerzenia znaczników w języku XAML używają znaków "{" i "}" w składni atrybutu, która jest konwencją, zgodnie z którą procesor XAML rozpoznaje, że rozszerzenie znaczników musi przetworzyć atrybut.
Przykładowe użycie elementu {StaticResource}
Ten przykładowy kod XAML jest pobierany z przykładu powiązania danych XAML.
<StackPanel Margin="5">
<!-- Add converter as a resource to reference it from a Binding. -->
<StackPanel.Resources>
<local:S2Formatter x:Key="GradeConverter"/>
</StackPanel.Resources>
<TextBlock Style="{StaticResource BasicTextStyle}" Text="Percent grade:" Margin="5" />
<Slider x:Name="sliderValueConverter" Minimum="1" Maximum="100" Value="70" Margin="5"/>
<TextBlock Style="{StaticResource BasicTextStyle}" Text="Letter grade:" Margin="5"/>
<TextBox x:Name="tbValueConverterDataBound"
Text="{Binding ElementName=sliderValueConverter, Path=Value, Mode=OneWay,
Converter={StaticResource GradeConverter}}" Margin="5" Width="150"/>
</StackPanel>
W tym konkretnym przykładzie tworzony jest obiekt, który jest oparty na klasie niestandardowej i umieszczony jako zasób w ResourceDictionary. Aby być prawidłowym zasobem, ten local:S2Formatter element musi również mieć wartość atrybutu x:Key . Wartość atrybutu jest ustawiona na "GradeConverter".
Zasób jest następnie wywoływany nieco dalej w kodzie XAML, gdzie znajduje się {StaticResource GradeConverter}.
Zwróć uwagę, że użycie rozszerzenia znaczników {StaticResource} ustawia właściwość innego rozszerzenia znaczników {Binding}, dlatego w tym miejscu istnieją dwa zagnieżdżone użycia rozszerzeń znaczników. Wewnętrzny jest najpierw obliczany, aby zasób został uzyskany jako pierwszy i może być używany jako wartość. Ten sam przykład jest również wyświetlany w rozszerzeniu znaczników {Binding}.
Obsługa narzędzi czasu projektowania dla rozszerzenia znaczników {StaticResource}
Program Microsoft Visual Studio może uwzględniać możliwe wartości kluczy w rozwijanych listach programu IntelliSense podczas korzystania z rozszerzenia znaczników {StaticResource} na stronie XAML. Na przykład, gdy tylko wpiszesz "{StaticResource", dowolne klucze zasobów z bieżącego zakresu wyszukiwania są wyświetlane w menu kontekstowym IntelliSense. Oprócz typowych zasobów na poziomie strony (FrameworkElement.Resources) i aplikacji (Application.Resources) widoczne są również zasoby motywu XAML i zasoby z wszelkich rozszerzeń używanych przez projekt.
Gdy klucz zasobu istnieje w ramach dowolnego użycia {StaticResource} , funkcja Przejdź do definicji (F12) może rozpoznać ten zasób i wyświetlić słownik, w którym jest zdefiniowany. W przypadku zasobów dotyczących motywu jest to plik generic.xaml na potrzeby czasu projektowania.
Tematy pokrewne
Windows developer