Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
Le projet SLExtensions commence à être assez conséquent. Je vais essayer de poster un peu plus régulièrement sur ce qu’il contient et compléter les exemples. Je commence donc cette série d’article par un des nombreux converter contenu dans le projet.
L’AlternateBackgroundConverter retourne un brush différent chaque fois que le converter est appelé. Ce converter nécessite que la propriété ConverterParameter soit spécifiée lors du binding. Le ConverterParameter peut être soit une string contenant une liste de couleurs séparées par des espaces soit une référence à un objet AlternateBackgroundConverterParameter.
<UserControl x:Class="SLExtensions.Showcase.PageAlternateConverter"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sled="clr-namespace:SLExtensions.Data;assembly=SLExtensions"
xmlns:scControllers="clr-namespace:SLExtensions.Showcase.Controllers;assembly=SLExtensions.Showcase"
>
<UserControl.Resources>
<sled:AlternateBrushConverter x:Key="alternateConverter" />
<sled:AlternateBrushConverterParameter x:Key="alternateParameter" >
<sled:AlternateBrushConverterParameter.Brushes>
<SolidColorBrush Color="White"/>
<LinearGradientBrush StartPoint="0.45666,0.185989" EndPoint="1.22116,0.185989">
<LinearGradientBrush.RelativeTransform>
<TransformGroup>
<SkewTransform CenterX="0.45666" CenterY="0.185989" AngleX="0.135522" AngleY="0"/>
<RotateTransform CenterX="0.45666" CenterY="0.185989" Angle="82.8625"/>
</TransformGroup>
</LinearGradientBrush.RelativeTransform>
<GradientStop Color="#80FFFFFF" Offset="0"/>
<GradientStop Color="#808C8A8C" Offset="0.62345"/>
<GradientStop Color="#8019161A" Offset="1"/>
</LinearGradientBrush>
<SolidColorBrush Color="Gainsboro"/>
<SolidColorBrush Color="#FFDD22"/>
</sled:AlternateBrushConverterParameter.Brushes>
</sled:AlternateBrushConverterParameter>
</UserControl.Resources>
<StackPanel x:Name="LayoutRoot" Background="White" >
<TextBlock Text="Alternating brush converter"/>
<ItemsControl ItemsSource="ABCDEFGH">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Background="{Binding Path='', Converter={StaticResource alternateConverter}, ConverterParameter={StaticResource alternateParameter}}">
<TextBlock Text="{Binding}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ItemsControl ItemsSource="ABCDEFGH" Margin="0,40,0,0">
<Grid Background="{Binding Path='', Converter={StaticResource alternateConverter}, ConverterParameter='White Gray #FFDD22'}">
</StackPanel>
</UserControl>