L'articolo è la continuazione della prima parte pubblicata il 17 aprile 2007.
Gli stili
Definire n oggetti nelle risorse per n proprietà non gioverebbe sicuramente né alla leggibilità del codice né alla manutenzione.
Ogni oggetto derivato da FrameworkElement o FrameworkContentElement espone una proprietà Style, del tipo omonimo Style, che è essenzialmente una collezione di coppie proprietà/valore.
<Button> Ancora Hello World? <Button.Style> <Style> <Setter Property="Button.FontSize" Value="15"/> <Setter Property="Button.Width" Value="150"/> <Setter Property="Button.Height" Value="50"/> <Setter Property="Button.Foreground" Value="White"/> <Setter Property="Button.Background" Value="Red"/> <Setter Property="Button.Margin" Value="5"/> <Setter Property="Button.BitmapEffect"> <Setter.Value> <DropShadowBitmapEffect Color="Black" Direction="320" ShadowDepth="5" Softness="0.2" Opacity="0.3"/> </Setter.Value> </Setter> </Style> </Button.Style> </Button>
L'oggetto Style espone la proprietà Setters: una collezione di oggetti Setter che espongono due proprietà di nome Property e Value. Con la prima indichiamo la proprietà da impostare, mentre con la seconda il valore. Il nome della proprietà è spesso preceduto, ma non sempre, dal nome della classe, dove tale proprietà è definita o dalla quale è ereditata. Nell'esempio seguente la prima e la seconda sintassi sono equivalenti, perché la proprietà FontSize è ereditata da Control:
<Setter Property="Button.FontSize" Value="15"/> <Setter Property="Control.FontSize" Value="15"/>
Sfruttando la proprietà Style siamo riusciti a raggruppare tutte le impostazioni in un unico oggetto che potremo tranquillamente inserire tra le risorse per riutilizzarlo tra più elementi dell'interfaccia, anche differenti tra loro.
<StackPanel>
<StackPanel.Resources>
<Style x:Key="MyStyle">
<Setter Property="Control.FontSize" Value="15"/>
<Setter Property="Control.Width" Value="150"/>
<Setter Property="Control.Height" Value="50"/>
<Setter Property="Control.Foreground" Value="White"/>
<Setter Property="Control.Background" Value="Red"/>
<Setter Property="Control.Margin" Value="5"/>
<Setter Property="Control.BitmapEffect">
<Setter.Value>
<DropShadowBitmapEffect Color="Black" Direction="320" ShadowDepth="5" Softness="0.2" Opacity="0.3"/>
</Setter.Value>
</Setter>
</Style>
</StackPanel.Resources>
<Button Style="{StaticResource MyStyle}">
Ancora Hello World?
</Button>
<TextBlock Style="{StaticResource MyStyle}">
NO Hello WPF!
</TextBlock >
</StackPanel>Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.


