ComboBox в стиле Windows 7 в WPF - PullRequest
       7

ComboBox в стиле Windows 7 в WPF

1 голос
/ 19 августа 2010

Я пытаюсь воссоздать стиль ComboBox в WPF, который вы видите в проводнике Windows. Я пытаюсь создать что-то похожее на комбинированный список «Упорядочить по:», который находится, например, в разделе «Библиотеки-> Документы». У поля со списком нет контура, пока вы не наведете на него курсор, и при щелчке отобразится контекстное меню, в котором можно выбрать один элемент.

1 Ответ

0 голосов
/ 19 августа 2010

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

Например:

<Style TargetType="{x:Type ComboBox}">
    <Setter Property="Template" Value="{StaticResource TemplateWhenFocused}" />
    <Style.Triggers>
        <MultiTrigger>
            <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver" Value="False" />
                <Condition Property="IsFocused" Value="False" />
            </MultiTrigger.Conditions>
            <Setter Property="Template" Value="{StaticResource TemplateWhenNotFocused}" />
        </MultiTrigger>
    </Style.Triggers>
</Style>

Пример не сфокусированного шаблона. Может потребоваться изменить поле, чтобы текст не «прыгал» при переключении фокуса на объект или на него.

<ControlTemplate TargetType="{x:Type ComboBox}" x:Key="StyleWhenNotFocused">
    <TextBlock Text="{TemplateBinding Text}"
               Foreground="{TemplateBinding Foreground}"
               Background="{TemplateBinding Background}"
               Padding="{TemplateBinding Padding}"
               Margin="2,0,2,0" />
</ControlTemplate>
...