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.