嗨,我有一个问题,我有一个组合框,我可以选择一种颜色。
<ComboBox Name="cb_farbe" Text="farbe" HorizontalContentAlignment="Center" IsEditable="True" Grid.Row="7" Grid.Column="1" VerticalAlignment="Center" Grid.ColumnSpan="2" SelectionChanged="FarbeSelected">
<ComboBox.ItemTemplate>
<DataTemplate>
<Rectangle Name="rectangle_farbecontent" Width="425" Height="20" Fill="{Binding}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
<SolidColorBrush>Blue</SolidColorBrush>
<SolidColorBrush>Green</SolidColorBrush>
<SolidColorBrush>LightBlue</SolidColorBrush>
<SolidColorBrush>Black</SolidColorBrush>
<SolidColorBrush>LightGray</SolidColorBrush>
<SolidColorBrush>Gray</SolidColorBrush>
</ComboBox>
这样做为我提供了不同颜色的下拉选择。但是,当我选择一个时,组合框只显示颜色的十六进制字符串。我尝试过使用我在网上找到的其他答案,但没有一个能够解决我目前正在尝试做的事情如下。尽管如此,它仍然很有用。
private void FarbeSelected(object sender, SelectionChangedEventArgs e)
{
BrushConverter conv = new BrushConverter();
cb_farbe.Background = (Brush)conv.ConvertFromString(cb_farbe.Text) as SolidColorBrush;
}
答案 0 :(得分:2)
请勿设置IsEditable
和Text
属性。
并且不要在SelectionChanged处理程序中更改ComboBox属性。改为使用适当的DataTemplate。
<ComboBox HorizontalContentAlignment="Center">
<ComboBox.ItemTemplate>
<DataTemplate>
<Rectangle Width="425" Height="20" Fill="{Binding}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
<SolidColorBrush>Blue</SolidColorBrush>
<SolidColorBrush>Green</SolidColorBrush>
<SolidColorBrush>LightBlue</SolidColorBrush>
<SolidColorBrush>Black</SolidColorBrush>
<SolidColorBrush>LightGray</SolidColorBrush>
<SolidColorBrush>Gray</SolidColorBrush>
</ComboBox>