WPF工具包AutoCompleteBox - 如何设置下拉列表中的不同背景,前景而不是文本框

时间:2013-05-28 04:16:11

标签: wpf wpftoolkit

我正在使用WPF Toolkit中的AutoCompleteBox控件。

如何在项目下拉列表中设置与文本框不同的背景和前景?

下面的XAML对下拉菜单中的项目文本块应用了不同的样式,但是使用自动填充文本框的背景颜色将背景留在下拉项目后面。基本上我希望自动完成文本框具有深色背景,并且下拉列表具有白色背景。

    <Style x:Key="SearchBox2" TargetType="wpftoolkit:AutoCompleteBox" >
        <Setter Property="Background" Value="#3B4044"></Setter>
        <Setter Property="Foreground" Value="#FFFFFF"></Setter>
        <Setter Property="BorderBrush" Value="#000000"></Setter>
        <Setter Property="BorderThickness" Value="1"></Setter>
        <Setter Property="Height" Value="25"></Setter>
    </Style>

       <wpftoolkit:AutoCompleteBox 
            x:Name="SearchBox"
            Grid.Column="0" Grid.Row="0"
            ValueMemberPath="SearchDesc"
            FilterMode="Contains"
            IsTextCompletionEnabled="True" 
            Text="Search for an app..."
            Style="{StaticResource SearchBox2}" >
            <wpftoolkit:AutoCompleteBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding LongDesc}" Foreground="#16509A" Background="White" />
                    </StackPanel>
                </DataTemplate>
            </wpftoolkit:AutoCompleteBox.ItemTemplate>
        </wpftoolkit:AutoCompleteBox>

1 个答案:

答案 0 :(得分:1)

不使用ItemTemplate,而是使用ItemContainerStyle。请在下面找到代码修复程序,让我知道这是否适合您。

请尝试以下代码:

<wpftoolkit:AutoCompleteBox 
    x:Name="SearchBox"
    Grid.Column="0" Grid.Row="0"            
    FilterMode="Contains"
    IsTextCompletionEnabled="True" 
    Text="Search for an app...">
    <wpftoolkit:AutoCompleteBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="Background" Value="White"/>
            <Setter Property="Foreground" Value="#16509A"/>
        </Style>
    </wpftoolkit:AutoCompleteBox.ItemContainerStyle>           
</wpftoolkit:AutoCompleteBox>