WPF如何设置组合框的背景

时间:2017-09-29 07:30:01

标签: c# wpf combobox

嗨,我有一个问题,我有一个组合框,我可以选择一种颜色。

<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;
    }

1 个答案:

答案 0 :(得分:2)

请勿设置IsEditableText属性。

并且不要在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>