Je lie la ItemsSource
de mon ListBox
comme:Comment trier les couleurs prédéfinies par valeur de couleur ou par luminosité comme sur la palette de couleurs dans google drive?
<ObjectDataProvider MethodName="GetType" ObjectType="{x:Type sys:Type}" x:Key="colorsTypeOdp">
<ObjectDataProvider.MethodParameters>
<sys:String>System.Windows.Media.Colors, PresentationCore,
Version=3.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35</sys:String>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<ObjectDataProvider ObjectInstance="{StaticResource colorsTypeOdp}"
MethodName="GetProperties" x:Key="colorPropertiesOdp">
</ObjectDataProvider>
Mon Xaml pour listBox:
<ListBox x:Name="coloListBox" Style="{x:Null}"
ItemsSource="{Binding Source={StaticResource colorPropertiesOdp},
Converter={StaticResource ColSortConverter}}"
SelectedItem="{Binding SelectedColor,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource ColorToStringConverter}}">
<ListBox.ItemTemplate>
<DataTemplate>
<Rectangle Fill="{Binding Name}" Width="15" Height="15" Stroke="#FF211E1E" OpacityMask="Black" StrokeThickness="1"/>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Width="250" Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
Converter
public class ColorSortConverter : IValueConverter
{
public Object Convert(Object value, Type targetType, Object parameter, CultureInfo culture)
{
PropertyInfo[] colorsProperties = null;
var result = value as PropertyInfo[] ;
if (result != null)
{
colorsProperties = result;
colorsProperties.OrderBy(i => i.Name).ToArray();
return colorsProperties;
}
return colorsProperties;
}
}
Comment trier le tableau dans le convertisseur afin d'obtenir le col ou triés par leur valeur HEX ou selon la luminosité?
Ne serait-il pas plus facile de simplement se lier à une collection triée? – Joey