Прекратить выделение выделенного элемента WPF ComboBox - PullRequest
3 голосов
/ 30 сентября 2010

В настоящее время я работаю над интерфейсом WPF, и у меня в окне есть поле со списком.Поэтому я хочу, чтобы пользователь мог выбрать элемент из этого списка, но когда он выбран, я не хочу, чтобы он выделялся синим цветом по умолчанию.

Я предполагаю, что есть какой-то способ остановить этов XAML, но я пока не смог найти решение.

Спасибо.

PS У меня нет доступа к Expression Blend, поэтому, если кто-то предложит решение, может ли оно быть в XAML

РЕДАКТИРОВАТЬ: просто чтобы сделать его более понятным, я под выбранным, я имею в виду, когда вы выбрали значение, и событие SelectionChanged сработало, и элемент отображается в поле со списком, и поле со списком подсвечивается следующим образом: alt text

Ответы [ 2 ]

7 голосов
/ 30 сентября 2010

Вам нужно установить внешний вид вашего выбора с помощью стилей.

    <Window.Resources>
    <Style TargetType="{x:Type ComboBoxItem}">
        <Setter Property="Control.Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ComboBoxItem}">
                    <Border Background="{TemplateBinding Background}">
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition />
                                <RowDefinition />
                            </Grid.RowDefinitions>
                            <Border Margin="2" Grid.Row="0" Background="Azure" />
                            <ContentPresenter />
                        </Grid>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" Value="Green" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

Этот стиль будет автоматически применяться ко всем комбинированным спискам в окне:

<StackPanel>
    <ComboBox>
        <ComboBoxItem>111</ComboBoxItem>
        <ComboBoxItem>222</ComboBoxItem>
        <ComboBoxItem>333</ComboBoxItem>
        <ComboBoxItem>444</ComboBoxItem>
        <ComboBoxItem>555</ComboBoxItem>
    </ComboBox>
</StackPanel>

Вы увидите его какследует:

http://i.stack.imgur.com/b4pDo.png

UPD: Чтобы удалить выделение с выбранного элемента, необходимо изменить системные кисти, которые фактически используются для этих целей.Просто добавьте два дополнительных стиля:

    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>  
0 голосов
/ 30 сентября 2010

Вы пытались просто установить свойство ComboBox.Background?

...