Подсветка ComboBox - PullRequest
       1

Подсветка ComboBox

0 голосов
/ 05 августа 2011

У меня проблема со списком, который я пытаюсь настроить. Он находится в UserControl, и я хочу, чтобы его свойство BorderBrush изменялось с Прозрачного на Белый, когда указатель мыши над ним (постепенное увеличение / уменьшение будет бонусом).

Но я не могу получить правильный синтаксис триггера для этого ... теперь я чувствую себя сбитым с толку и, возможно, здесь упускаю что-то очевидное.

Вот этот комбинированный список:

<ComboBox x:Name="comboEmiCategories" ItemsSource="{Binding}" Background="Transparent" Height="15px" Width="30px" BorderBrush="Transparent" Padding="-2">
                    <ComboBox.Resources>
                        <sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">0</sys:Double>
                    </ComboBox.Resources>
                    <ComboBox.ItemTemplate>
                        <DataTemplate>
                            <Image Source="{Binding}" Stretch="UniformToFill" Height="15px" Width="30px" Margin="0" />
                        </DataTemplate>
                    </ComboBox.ItemTemplate>
                    <ComboBox.Template>
                        <ControlTemplate>
                            <ControlTemplate.Triggers>
                                <Trigger Property="ComboBox.IsMouseOver" Value="True">
                                    <Setter Property="ComboBox.BorderBrush" Value="White" />
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </ComboBox.Template>
                </ComboBox>

Триггер не работает, даже хуже, на самом деле, если я не закомментирую всю часть ComboBox.Template, элемент управления исчезнет.

Основная цель заключается в том, чтобы иметь ComboBox, который укладывает изображения и позволяет пользователю выбрать один из списка, и ничего кроме показанных изображений.

Спасибо.

EDIT: Решение Марио поместить его в стиль работает, но разве это единственный способ сделать это?

1 Ответ

0 голосов
/ 05 августа 2011

Постарайтесь поместить приведенный ниже xaml в раздел ресурсов вашего окна / usercontrol.

<Style x:Name="cbStyle" TargetType="ComboBox">
   <Setter Property="BorderBrush" Value="Transparent" />
   <Style.Triggers>
      <Trigger Property="IsMouseOver" Value="True">
         <Setter Property="BorderBrush" Value="White" />
      </Trigger>
   </Style.Triggers>
</Style>

Конечно, вы должны ссылаться на этот стиль в элементе ComboBox.Также вырежьте что-нибудь внутри ControlTemplate, что бесполезно.

РЕДАКТИРОВАТЬ: ваш раздел ComboBox должен выглядеть следующим образом:

<ComboBox x:Name="comboEmiCategories" ItemsSource="{Binding}" Height="15px" Width="30px" Style="{StaticResource cbStyle}" Padding="-2">
                    <ComboBox.Resources>
                        <sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">0</sys:Double>
                    </ComboBox.Resources>
                    <ComboBox.ItemTemplate>
                        <DataTemplate>
                            <Image Source="{Binding}" Stretch="UniformToFill" Height="15px" Width="30px" Margin="0" />
                        </DataTemplate>
                    </ComboBox.ItemTemplate>
                </ComboBox>

Также поместите определение стиля в вашем UserControl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...