1

我创建了一个要应用于组合框的 FlatCombo 样式。不能按我想要的方式工作的一件事是当 ComboBox 具有焦点时。我希望几乎没有迹象表明它有焦点。当前文本区域有蓝色突出显示。我假设这是从我的 3rd 方资源字典中提取的。如何调整我的本地样式,使其焦点显示的只是一条浅虚线?

谢谢,

戴夫

<UserControl.Resources>

    <Style x:Key="MyFocusVisual">
        <Setter Property="Control.Template">
            <Setter.Value>
                <ControlTemplate>
                    <Rectangle Margin="-1" StrokeThickness="1" Stroke="Black" StrokeDashArray="1 2"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <ControlTemplate x:Key="FlatCombo" TargetType="{x:Type ComboBox}">
    <ContentControl            
        Content="{TemplateBinding SelectionBoxItem}"            
        ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"            
        ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"            
        Margin="0,0,0,0"  Focusable="True"

        />
</ControlTemplate>

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

        <ComboBox IsSynchronizedWithCurrentItem="True" x:Name="ComboBoxMinute" Width="Auto" 
              Height="Auto" HorizontalAlignment="Center" 
              Background="{Binding Path=Background, ElementName=TextBlockDate, Mode=Default}" 
              BorderBrush="{x:Null}" FontFamily="{Binding Path=FontFamily, 
              ElementName=TextBlockDate, Mode=Default}" 
              FontSize="{Binding Path=FontSize, ElementName=TextBlockDate, Mode=Default}" 
              Foreground="{Binding Path=Foreground, ElementName=TextBlockDate, Mode=Default}" 
              Padding="0,0,0,0" MaxDropDownHeight="200" Style="{StaticResource DropDown}" VerticalContentAlignment="Stretch" 
              VerticalAlignment="Center" FocusVisualStyle="{DynamicResource MyFocusVisual}"/>
4

1 回答 1

1

您应该将 OverridesDefaultStyle 设置为 True,而不是 false。您正在完全替换控件,因此将全部替换。

然而,看着你的代码,你说你希望它在集中时是平坦的;然而,当控件没有聚焦并且鼠标不在它上面时,您的触发器只会转到平面控件模板。那是你要的吗?

这里要考虑的另一个方面是,在可编辑组合的情况下,文本框将以蓝色突出显示文本,我认为这是目前无法更改的。

于 2009-02-16T04:07:18.590 回答