代码之家  ›  专栏  ›  技术社区  ›  devdigital

WPF中的Windows 7样式组合框

  •  1
  • devdigital  · 技术社区  · 15 年前

    我正在尝试在WPF中重新创建组合框的样式,您可以在Windows资源管理器中看到。我正在尝试创建类似于“排列方式:”组合框的内容,例如“库”->文档下的组合框。在将鼠标悬停在该组合框上之前,该组合框没有轮廓,单击该组合框时,将显示一个允许单个选择的上下文菜单。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Rachel    15 年前

    您可以覆盖默认模板。根据组合框是否具有焦点,使用触发器指定要使用的模板。

    例如:

    <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>
    
    推荐文章