1

我正在使用 WPF 工具包中的 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>
4

1 回答 1

2

而不是使用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>
于 2013-10-25T11:21:01.810 回答