(0) exportieren Drucken
Alle erweitern

FrameworkElement.Resources-Eigenschaft

Aktualisiert: November 2007

Ruft das lokal definierte Ressourcenwörterbuch ab oder legt es fest.

Namespace:  System.Windows
Assembly:  PresentationFramework (in PresentationFramework.dll)
XMLNS für XAML: http://schemas.microsoft.com/winfx/xaml/presentation

public ResourceDictionary Resources { get; set; }
/** @property */
public ResourceDictionary get_Resources()
/** @property */
public  void set_Resources(ResourceDictionary value)

public function get Resources () : ResourceDictionary
public function set Resources (value : ResourceDictionary)
<object>
  <object.Resources>
    oneOrMoreResourceElements
  </object.Resources>
</object>
oneOrMoreResourceElements
                    Mindestens ein Objektelement, das jeweils eine Ressource definiert. Jedes Eigenschaftenelement einer Ressource in einem ResourceDictionary muss über einen eindeutigen Wert für das x:Key-Attribut verfügen, das beim Abrufen von Werten aus dem ResourceDictionary als eindeutiger Schlüssel verwendet wird.
                

Eigenschaftenwert

Typ: System.Windows.ResourceDictionary
Das lokal definierte Ressourcenwörterbuch, in dem mit einem Schlüssel auf jede Ressource zugegriffen werden kann.

Ressourcenwörterbücher, die vollständig oder teilweise in Extensible Application Markup Language (XAML) definiert werden können, werden i. d. R. als Eigenschaftenelement erstellt und befinden sich meist im Stammelement für die einzelnen Seiten oder für die Anwendung. Durch das Platzieren des Ressourcenwörterbuchs auf dieser Ebene kann es leichter von einzelnen untergeordneten Elementen auf der Seite (oder bei Anwendungen von jeder beliebigen Seite) gefunden werden. In den meisten Anwendungsszenarios wird empfohlen, die Stile als Objektelemente in einem Ressourcenwörterbuch oder als externe Ressourcen zu definieren, sodass die gesamte Stilressource unabhängig ist. Mit diesem Ansatz lassen sich die Aufgaben von Designern und Entwicklern besser voneinander abgrenzen, weil die zu bearbeitenden physischen Dateien voneinander getrennt werden.

Beachten Sie, dass diese Eigenschaft nur das direkt im Element direkt deklarierte Ressourcenwörterbuch zurückgibt. Dies unterscheidet sich vom eigentlichen Ressourcensuchvorgang, bei dem ein untergeordnetes Element bei der rekursiven Aufwärtssuche auf alle in den jeweiligen übergeordneten Elementen definierten Ressourcen zugreifen kann.

Auf Ressourcen kann auch aus Code innerhalb einer Auflistung verwiesen werden. Sie müssen jedoch berücksichtigen, dass auf in XAML erstellte Ressourcen definitiv erst dann zugegriffen werden kann, nachdem Loaded von dem Element ausgelöst wurde, das das Wörterbuch deklariert. Ressourcen werden asynchron analysiert, und auch das Loaded-Ereignis ist keine Garantie dafür, dass Sie auf eine definierte XAML-Ressource verweisen können. Aus diesem Grund empfiehlt es sich, auf definierte XAML-Ressourcen allgemein nur als Teil von Laufzeitcode oder mit anderen XAML-Verfahren zu verweisen, z. B. mit Stilen oder Verweisen auf Ressourcenerweiterungen für Attributwerte. Der Zugriff auf Ressourcen über Code ist im Wesentlichen äquivalent zu einem DynamicResource-Verweis in XAML.

Das zugrunde liegende ResourceDictionary unterstützt die Methoden, die zum Hinzufügen, Entfernen oder Abfragen von Ressourcen in einer Auflistung mithilfe von Code erforderlich sind. Die Resources-Eigenschaft kann so festgelegt werden, dass sie das Szenario unterstützt, in dem die Ressourcenauflistung eines Elements durch ein neues oder anderes ResourceDictionary vollständig ersetzt wird.

Beachten Sie, dass die dargestellte XAML-Syntax kein Element für das ResourceDictionary enthält. Es handelt sich um ein Beispiel für implizite Auflistungssyntax. Tags, die das Auflistungselement darstellen, können weggelassen werden. Der Auflistung als Elemente hinzugefügte Elemente werden hingegen angegeben. Weitere Informationen über implizite Auflistungen und XAML finden Sie unter Terminologie der XAML-Syntax. Ein ResourceDictionary wird beispielsweise weiterhin explizit als Element angegeben, wenn Sie ein zusammengeführtes Wörterbuch erstellen. Dabei sind i. d. R. keine untergeordneten Elemente des ResourceDictionary vorhanden. Weitere Informationen finden Sie unter Zusammengeführte Ressourcenwörterbücher.

Dieses Beispiel zeigt, wie eine Ressource definiert und wie in Extensible Application Markup Language (XAML) mithilfe eines Attributs auf sie verwiesen wird.

Im folgenden Beispiel werden zwei Typen von Ressourcen definiert: eine SolidColorBrush-Ressource und mehrere Style-Ressourcen. Mit der SolidColorBrush-Ressource MyBrush werden die Werte mehrerer Eigenschaften bereitgestellt, von denen jede einen Wert vom Brush-Typ akzeptiert. Die Style-Ressourcen PageBackground, TitleText und Label zielen jeweils auf einen bestimmten Steuerelementtyp ab. Die Stile legen zahlreiche verschiedene Eigenschaften für die Zielsteuerelemente fest, wenn mit einen Ressourcenschlüssel auf diesen Stil verwiesen wird und er zum Festlegen der Style-Eigenschaft für mehrere bestimmte Steuerelemente verwendet wird, die in XAML definiert sind.

Beachten Sie, dass eine der Eigenschaften in den Settern des Label-Stils auch auf die bereits definierte MyBrush-Ressource verweist. Es handelt sich dabei um eine gängige Technik. Sie sollten jedoch nicht vergessen, dass Ressourcen analysiert und in der ihnen zugewiesenen Reihenfolge in ein Ressourcenwörterbuch eingegeben werden. Ressourcen werden auch in der Reihenfolge angefordert, in der sie im Wörterbuch gefunden werden, wenn Sie mit StaticResource-Markuperweiterung aus einer anderen Ressource auf sie verweisen. Stellen Sie sicher, dass jede Ressource, auf die Sie verweisen, bereits zuvor in der Ressourcenauflistung definiert sein muss, bevor sie angefordert wird. Sie können diese strenge Erstellungsreihenfolge der Ressourcenverweise ggf. umgehen, indem Sie stattdessen mit DynamicResource-Markuperweiterung zur Laufzeit auf die Ressource verweisen. Diese DynamicResource-Technik wirkt sich jedoch auf die Leistung aus. Weitere Informationen finden Sie unter Übersicht über Ressourcen.

<Page Name="root"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Page.Resources>
    <SolidColorBrush x:Key="MyBrush" Color="Gold"/>
    <Style TargetType="Border" x:Key="PageBackground">
      <Setter Property="Background" Value="Blue"/>
    </Style>
    <Style TargetType="TextBlock" x:Key="TitleText">
      <Setter Property="Background" Value="Blue"/>
      <Setter Property="DockPanel.Dock" Value="Top"/>
      <Setter Property="FontSize" Value="18"/>
      <Setter Property="Foreground" Value="#4E87D4"/>
      <Setter Property="FontFamily" Value="Trebuchet MS"/>
      <Setter Property="Margin" Value="0,40,10,10"/>
    </Style>
    <Style TargetType="TextBlock" x:Key="Label">
      <Setter Property="DockPanel.Dock" Value="Right"/>
      <Setter Property="FontSize" Value="8"/>
      <Setter Property="Foreground" Value="{StaticResource MyBrush}"/>
      <Setter Property="FontFamily" Value="Arial"/>
      <Setter Property="FontWeight" Value="Bold"/>
      <Setter Property="Margin" Value="0,3,10,0"/>
    </Style>
  </Page.Resources>
  <StackPanel>
    <Border Style="{StaticResource PageBackground}">
      <DockPanel>
        <TextBlock Style="{StaticResource TitleText}">Title</TextBlock>
        <TextBlock Style="{StaticResource Label}">Label</TextBlock>
        <TextBlock DockPanel.Dock="Top" HorizontalAlignment="Left" FontSize="36" Foreground="{StaticResource MyBrush}" Text="Text" Margin="20" />
        <Button DockPanel.Dock="Top" HorizontalAlignment="Left" Height="30" Background="{StaticResource MyBrush}" Margin="40">Button</Button>
        <Ellipse DockPanel.Dock="Top" HorizontalAlignment="Left" Width="100" Height="100" Fill="{StaticResource MyBrush}" Margin="40" />
      </DockPanel>
    </Border>
  </StackPanel>
</Page>


Das vollständige Beispiel finden Sie unter Definieren eines Ressourcenbeispiels.

Windows Vista

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft