-->
Resourcen
Was sind Resourcen
Ressourcen können z.B. Bilder oder Dokumente sein, welche zur Laufzeit
verwendet werden. In diesem Falle sprechen wir von binären Resourcen.
Ressourcen können Definitionen wie Styles oder Trigger sein welche in
XAML-Syntax definiert sind.
Kurzüberblick der Resourcen
- Style: Format von Elementen mit den Eigenschaften des Elementes, z.B.
Background, Border...
- Trigger: Reaktion auf Ereignise, z.B. wenn die Maus über einen Button
fährt, wird dieser rot.
- DataTrigger: Reaktion auf sich verändernde Werte: z.B. Grünner
Hintergrund wenn die Länge des Feldes PLZ = 4 ist.
- DataTemplate: Formatierungen z.B. für die Anzeige in ListBoxen oder Tees
Wo werden Ressourcen definiert
- System Resource
- Application Resource (in Datei App.xaml)
- Window Resource
- Element Resource
System Resource
Beschreibung einiger SystemResourcen |
Resource |
Beschreibung |
SystemColors |
Auswahl von im System vorhandenen Farben. |
SystemFonts |
Auswahl der im System installierten Zeichensätze |
Beispiele der Einbindung von System Ressourcen
<Grid Background="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}"
<Label Content="{StaticResource {x:Static
SystemParameters.VirtualScreenWidthKey}}" />
<CheckBox IsChecked="{x:Static SystemParameters.UIEffects}" Content="UIEffects"
/>
Weitere System Resourcen finden Sie wenn Sie im CodeBehind in einer Methode
SystemParameter. eingeben. Intelisense zeigt Ihnen nach dem Punkt die
Möglichkeiten auf.
Static oder Dynamic Resource
- StaticResource: Die Resource reagiert nicht auf eine Änderung der
ResourcenQuelle
- DynamicResource: Wenn sich die ResourcenQuelle ändert, wird die
Anwendung informiert und die entsprechenden Werte angepasst.
Application Resource
<Application>
<Application.Resources>
<SolidColorBrush Color = "Black" x:Key="{xStatic
SystemColors.WindowBrushKey}" />
</Application.Resources>
</Application>
Window Resource
<Window x:Class="Wpf_DatenAnbindung.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="396" Width="300">
<Window.Resources>
</Window.Resources>
Element Resources
<StackPanel>
<StackPanel.Resources>
<!-- Style für alle TextBoxen definieren -->
<Style x:Key="{x:Type TextBox}" TargetType="TextBox">
<Setter Property="Margin" Value="4,-3,8,8"
/>
</Style>
<!-- Abgeleiteter Style für die TextBox PLZ
definieren-->
<Style x:Key="dataPLZ" TargetType="TextBox"
BasedOn="{StaticResource {x:Type TextBox}}">
<Style.Triggers >
<DataTrigger
Binding="{Binding RelativeSource={x:Static RelativeSource.Self},Path =
Text.Length}" Value="4">
<Setter Property="Background" Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Resources>
<Label>Vorname</Label>
<TextBox></TextBox>
<Label>Nachname</Label>
<TextBox></TextBox>
<Label>Adresse</Label>
<TextBox></TextBox>
<DockPanel>
<StackPanel>
<Label>PLZ</Label>
<TextBox Width="40" Style="{StaticResource
dataPLZ}"></TextBox>
</StackPanel>
<StackPanel>
<Label>Ort</Label>
<TextBox></TextBox>
</StackPanel>
</DockPanel>
</StackPanel>
Resourcen aus ResourceDictionary
Eine Resource welche immer wieder verwendet wird kann in einer Separaten
Datei (in diesem Beispiel myResource1.xaml) abgelegt werden und an beliebiger
Stelle eingelesen werden.
<StackPanel.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="myResource1.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</StackPanel.Resources>
Die Datei myResource1.xaml wird über Add New Item Resource
Dictionary erzeugt und hat zum Beispiel folgenden Inhalt:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<LinearGradientBrush x:Key="brushLinear">
<GradientStop Color="pink" Offset="0" />
<GradientStop Color="Aqua" Offset="0.5" />
<GradientStop Color="Red" Offset="1" />
</LinearGradientBrush>
</ResourceDictionary>
Binäre Resourcen
Eigenschaften
Von einer JPG oder anderen Datei kann man im Projektexplorer die
Eigenschaften einstellen.
Eigenschaften von Dateien |
Eigenschaft |
Beschreibung |
Build Action |
Ressource: Die Datei wird in die EXE oder DLL hinein kompiliert. Die
Datei kann nur durch erneutes Kompilieren des Programmes ausgetauscht
werden.
Content: Die Datei wird als eigenständige Datei beibehalten. In diesem
Falle sollte auch die Eigenschaft "Copy To Outputdirectory" auf
"Allways" oder "If newer" gestellt werden. Die Datei kann
ohne erneutem Kompilieren des Programmes ausgewechselt werden. |
Adressieren von Ressourcen
Absolute Pfadangabe, die Resource liegt in der Projekt-Root, BuildVorgang=Resource
Uri = ur new Uri("pack://application:,,,/bild.jpg");
Absolute Pfadangabe, die Resource liegt im Unterverzeichnis Bilder,
BuildVorgang=Resource
Uri = ur new Uri("pack://application:,,,/Bilder/bild.jpg");
Relative Pfadangabe (Das Bild liegt im gleichen Verzeichnis wie die Assemly)
Uri = ur new Uri(@".\Back3.jpg", UriKind.Relative) |