Vor langer Zeit schaute ich auf this MSDN walkthrough. Es implementiert einen Farbeditor und der Tooltip verwendet den Namen der Farbe wie "Rot" oder "Blau".Was ist der Unterschied zwischen diesen beiden Bindungen?
Heute implementiere ich eine ListBox, die ähnlich ist; Es zeigt eine Box mit der Farbe und dem Namen der Farbe daneben. Außer in meiner Anwendung werden alle Farbnamen als Hex-Werte wie # FFFF0000 und # FF0000FF angezeigt. Warum?
Hier ist die ColorsList
Klasse in beiden Projekten verwendet:
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));
}
}
}
Dieser XAML-Snippet macht der Tooltip den Namen der Farbe in der MSDN-Projekt verwenden (Sie können den Rest des Codes im Durchlauf sehen):
<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>
Hier ist meine XAML, den hex-Codes erzeugt:
<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>
Es sieht für mich genauso aus; was ist der Unterschied?