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>Contenuti dell'articolo
- Pagina 1
- Pagina 5
Per inserire un commento, devi registrarti alla nostra community.





Difficoltà
Stampa
Download 



