更改WPF组合框的边框颜色

时间:2012-07-17 18:15:26

标签: wpf xaml combobox styles

所以我试图在Expression blend中改变我的组合框的样式。

我做的是创建一个组合框,然后 RightClick>编辑模板>编辑副本

我可以更改组合框的颜色,除了组合框的背景和组合框的边框之间有白色边框。这是一个屏幕,你可以看到:

enter image description here

如您所见,蓝色和红色之间有一段时间的边界。据我所知,改变组合框颜色的代码如下:

<ToggleButton Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, 
RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource 
ComboBoxReadonlyToggleButton}" BorderBrush="Red" Background="Blue"/>

但无论如何,总会有白色边框。我该如何摆脱它?

2 个答案:

答案 0 :(得分:1)

我知道这是一个老问题,而且它是特定于混合但是当谷歌搜索这个问题时,这是我发现的第一件事。

一个解决这个问题的方法的一个非常简单的例子,比提到的第一个答案稍微复杂一点,就是设置“样式”属性。 (不确定这适用于混合,因为我不使用混合,但对于Visual Studio中的简单wpf,这可行)

例如,下面的代码创建一个窗口,就像问题中提到的那样,但白线(在下拉项中)可编辑。

<ComboBox Background="Blue" BorderBrush="Red">
    <ComboBox.ItemContainerStyle>
        <!-- Without this style section, there are white lines around the borders.  Even if you set these properties in the comboBoxItem areas -->
        <Style TargetType="ComboBoxItem">
            <Setter Property="Background" Value="Green"/>
            <Setter Property="BorderBrush" Value="Purple"></Setter>
        </Style>
     </ComboBox.ItemContainerStyle>
     <ComboBoxItem MouseMove="schedule" Name="cbi1">schedule</ComboBoxItem>
</ComboBox>

答案 1 :(得分:0)

问题是当您编辑副本时,您正在使用Microsoft的内置chrome组件编辑副本。为了更改外部边框,您需要使用普通的WPF控件替换这些位,以便您可以更改这些值。对于组合框,您需要在此处使用代码:http://msdn.microsoft.com/en-us/library/ms752094

e:这是您要编辑的部分

 <Border x:Name="Border"
        Grid.ColumnSpan="2"
        CornerRadius="2"
        BorderThickness="1">
  <Border.BorderBrush>
    <LinearGradientBrush EndPoint="0,1"
                         StartPoint="0,0">
      <GradientStop Color="{DynamicResource BorderLightColor}"
                    Offset="0" />
      <GradientStop Color="{DynamicResource BorderDarkColor}"
                    Offset="1" />
    </LinearGradientBrush>
  </Border.BorderBrush>