8

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

我所做的是创建一个组合框,然后右键单击 > 编辑模板 > 编辑副本

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

在此处输入图像描述

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

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

但无论如何,总是有一个白色的边框。我该如何摆脱它?

4

2 回答 2

1

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

解决此问题的一个非常简单的示例,它比提到的第一个答案稍微简单一点,即设置“样式”属性。(不确定这是否适用于混合,因为我不使用混合,但对于视觉工作室中的简单 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>
于 2015-02-13T16:40:07.880 回答
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>
于 2012-07-17T18:50:11.723 回答