2009-02-16 48 views
1

我创建了一个我想应用于组合框的FlatCombo样式。唯一不符合我想要的方式是当组合框具有焦点时。我几乎不想表明它有重点。目前在文本区域有一个蓝色突出显示。我认为这是从我的第三方资源字典中挑选出来的。如何调整我的本地风格,使其显示的焦点是浅虚线?在WPF中,如何设置样式,以便当组合框具有焦点时不突出显示?

感谢,

戴夫

<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}"/> 

回答

1

您应该设置OverridesDefaultStyle为True,而不是假的。你完全取代了这个控制器,所有这些都将被替换。

然而,看着你的代码,你说你希望它在聚焦时是平坦的;然而当触发器仅在平坦的控制模板上时不是聚焦,并且鼠标不是在其上。那是你要的吗?

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

相关问题