改变 WPF 组合框的边框颜色

8
我正在尝试在Expression Blend中更改我的组合框的样式。我创建了一个组合框,然后右键单击>编辑模板>编辑副本。我可以更改组合框的颜色,但是在组合框的背景和边框之间有一个白色边框。如下图所示:https://istack.dev59.com/2tekE.webp。据我所知,更改组合框颜色的代码如下:
<ToggleButton Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, 
RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource 
ComboBoxReadonlyToggleButton}" BorderBrush="Red" Background="Blue"/>

但是无论如何,总会有一个白色的边框。我该如何去掉它?
2个回答

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>

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接