Uzun zaman önce this MSDN walkthrough'a baktım. Bir renk editörü uygular ve araç ipucu, rengin adını "Kırmızı" veya "Mavi" gibi kullanır. Bu iki bağlantı arasındaki fark nedir?
Bugün, benzer bir ListBox uygulayacağım; Renk ve yanındaki rengin adını içeren bir kutu görüntüler. Uygulamamın dışında, tüm renk adları # FFFF0000 ve # FF0000FF gibi onaltılık değerler olarak görüntülenir. Niye ya? İşte
hem projelerde kullanılanColorsList
sınıf var:
public ColorsList()
{
Type type = typeof(Colors);
foreach (PropertyInfo propertyInfo in type.GetProperties(BindingFlags.Public | BindingFlags.Static))
{
if (propertyInfo.PropertyType == typeof(Color))
{
Add((Color)propertyInfo.GetValue(null, null));
}
}
}
Bu XAML pasajı ipucu (eğer örneklerde kodun geri kalanını görebilir) MSDN projesinde renk adını kullanmak yapar:
<ListBox x:Name="lstColors" Grid.Row="1" ItemsSource="{StaticResource colors}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Rectangle Stroke="Black"
StrokeThickness="3"
Width="24"
Height="24"
RadiusX="5"
RadiusY="5">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding}" />
</Rectangle.Fill>
</Rectangle>
<TextBlock Text="{Binding}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
:
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Tag="{Binding}" Command="{x:Static PropertyEditing:PropertyValueEditorCommands.ShowInlineEditor}">
<Button.Template>
<ControlTemplate>
<Border Width="30" Height="30" BorderBrush="Black" BorderThickness="1" CornerRadius="5">
<Rectangle Width="22" Height="22" ToolTip="{Binding}">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding}"/>
</Rectangle.Fill>
</Rectangle>
</Border>
</ControlTemplate>
</Button.Template>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
İşte hex kodlarını üretir benim XAML varBana aynı görünüyor; fark ne?