Como definir e referenciar um recurso
Este exemplo mostra como definir um recurso e fazer referência a ele usando um atributo em XAML (Extensible Application Markup Language).
Exemplo
O exemplo a seguir define dois tipos de recursos: um SolidColorBrush recurso e vários Style recursos. O SolidColorBrush recurso MyBrush
é usado para fornecer o valor de várias propriedades que cada uma tem um Brush valor de tipo. Os Style recursos PageBackground
e TitleText
Label
cada um deles tem como destino um tipo de controle específico. Os estilos definem uma variedade de propriedades diferentes nos controles de destino, quando esse recurso de estilo é referenciado por chave de recurso e é usado para definir a Style propriedade de vários elementos de controle específicos definidos em XAML.
Observe que uma das propriedades dentro dos setters do estilo Label
também fazem referência ao recurso MyBrush
definido anteriormente. Essa é uma técnica comum, mas é importante lembrar que os recursos são analisados e inseridos em um dicionário de recursos na ordem em que são apresentados. Recursos também serão solicitados pela ordem encontrada no dicionário se você usar a Extensão de marcação StaticResource para fazer referência a eles de dentro de outro recurso. Verifique se os recursos aos quais você fez referência são definidos anteriormente na coleção de recursos da qual esse recurso é solicitado. Se necessário, você pode contornar a ordem de criação estrita de referências de recurso usando uma extensão de marcação DynamicResource para fazer referência ao recurso em tempo de execução, mas você deve estar ciente de que essa técnica DynamicResource tem consequências de desempenho. Para ver mais detalhes, consulte Recursos XAML.
<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>
Confira também
.NET Desktop feedback