2015-07-20 139 views
0

我尝试更改我的ComboBox边框颜色。更改组合框边框颜色

这是我使用的style

<Style x:Key="ComboBoxStyle1" TargetType="{x:Type ComboBox}" > 
    <Setter Property="SnapsToDevicePixels" Value="True"/> 
    <Setter Property="OverridesDefaultStyle" Value="True"/> 
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/> 
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/> 
    <Setter Property="ScrollViewer.CanContentScroll" Value="True"/> 
    <Setter Property="TextElement.Foreground" Value="Black"/> 
    <Setter Property="FocusVisualStyle" Value="{x:Null}"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ComboBox}"> 
       <Grid> 
        <ToggleButton x:Name="ToggleButton" Grid.Column="2" 
         ClickMode="Press" Focusable="False" 
         IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" 
         Template="{StaticResource ComboBoxToggleButtonTemplate}"/> 

        <ContentPresenter x:Name="ContentSite" Margin="5, 3, 23, 3" IsHitTestVisible="False" 
         HorizontalAlignment="Left" VerticalAlignment="Center"        
         Content="{TemplateBinding SelectionBoxItem}" 
         ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" 
         ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"/> 

        <TextBox x:Name="PART_EditableTextBox" Margin="3, 3, 23, 3"      
         IsReadOnly="{TemplateBinding IsReadOnly}" 
         Visibility="Hidden" Background="Transparent" 
         HorizontalAlignment="Left" VerticalAlignment="Center" 
         Focusable="True" > 
         <TextBox.Template> 
          <ControlTemplate TargetType="{x:Type TextBox}" > 
           <Border x:Name="PART_ContentHost" Focusable="False" /> 
          </ControlTemplate> 
         </TextBox.Template> 
        </TextBox> 
        <!-- Popup showing items --> 
        <Popup x:Name="Popup" Placement="Bottom" 
         Focusable="False" AllowsTransparency="True" 
         IsOpen="{TemplateBinding IsDropDownOpen}" 
         PopupAnimation="Slide" > 
         <Grid x:Name="DropDown" SnapsToDevicePixels="True" 
          MinWidth="{TemplateBinding ActualWidth}" 
          MaxHeight="{TemplateBinding MaxDropDownHeight}"> 
          <Border x:Name="DropDownBorder" Background="Transparent" Margin="0, 1, 0, 0" 
           CornerRadius="0" BorderThickness="1,1,1,1" 
           BorderBrush="{StaticResource ComboBoxNormalBorderBrush}"/> 
          <ScrollViewer Margin="4" SnapsToDevicePixels="True"> 
           <ItemsPresenter KeyboardNavigation.DirectionalNavigation="Contained" /> 
          </ScrollViewer> 
         </Grid> 
        </Popup> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="HasItems" Value="False"> 
         <Setter Property="MinHeight" TargetName="DropDownBorder" Value="95"/> 
        </Trigger> 
        <Trigger Property="IsEnabled" Value="False"> 
         <Setter Property="TextElement.Foreground" Value="{StaticResource ComboBoxDisabledForegroundBrush}"/> 
        </Trigger> 
        <Trigger Property="IsGrouping" Value="True"> 
         <Setter Property="ScrollViewer.CanContentScroll" Value="False"/> 
        </Trigger> 
        <Trigger Property="IsEditable" Value="True"> 
         <Setter Property="KeyboardNavigation.IsTabStop" Value="False"/> 
         <Setter Property="Visibility" TargetName="PART_EditableTextBox" Value="Visible"/> 
         <Setter Property="Visibility" TargetName="ContentSite" Value="Hidden"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

我试图改变所有的属性,但仍是我的ComboBox边框颜色是white

enter image description here

我也尝试定义我的ComboBox控制器里面的颜色或通过后面的代码。

更新

我把这个代码:

<Border BorderBrush="Red" BorderThickness="3" /> 

这是结果:

enter image description here

正如你可以看到我仍然有white颜色,我想要删除。

回答

1

您可以添加这是你的ControlTemplate边境根:

<ControlTemplate TargetType="{x:Type ComboBox}"> 
    <Border BorderBrush="{TemplateBinding BorderBrush}" 
      BorderThickness="{TemplateBinding BorderThickness}"> 
     <Grid> 
      <!--your template is here--> 
     </Grid> 
    </Border> 

    <!--etc--> 
+0

请参阅我的更新 –

+1

它的工作原理。如果你看到结果如你所示,也许你的组合框被放置到另一个具有框架的控件中。请使用WPF Inspector(https://wpfinspector.codeplex.com/)来浏览您的视觉树 – VMaleev