在WPF中将borderbrush设置为LinearGradientBrush

时间:2011-09-16 15:31:17

标签: wpf brushes

我是WPF的新手,但仍有一些基本问题。

我有一个来自devcomponents的控件,默认为蓝色边框。我的文本框等具有更灰色的颜色。我希望devcomponents控件具有相同的边框。

我查看TextBox的属性,看看BorderBrush设置为“System.Windows.Media.LinearGradientBrush”但我不能放 -

<WpfEditors:IntegerInput BorderBrush="System.Windows.Media.LinearGradientBrush"...

事实上,我不能把 -

<TextBox BorderBrush="System.Windows.Media.LinearGradientBrush" ...

我错过了什么魔法?

感谢。

1 个答案:

答案 0 :(得分:11)

对于属性BorderBrush,您必须指定一个画笔(正如您可以通过其名称猜测的那样)。

一种BrushLinearGradientBrush(在颜色之间产生渐变的东西) SolidColorBrush是另一种也可以分配的画笔。

因为它看起来像您使用的这种控件已经分配了LinearGradientBrush。 现在,您可以指定一个您选择的画笔并覆盖已设置的Brush

LinearGradientBrush

的示例
<TextBox>
  <TextBox.BorderBrush>
    <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
      <GradientStop Color="Black" Offset="0.0" />
      <GradientStop Color="White" Offset="1" />
    </LinearGradientBrush>
  </TextBox.BorderBrush>
</TextBox>

如果您希望边框只是纯色,您还可以使用SolidColorBrush

  <TextBox.BorderBrush>
    <SolidColorBrush Color="Red" />
  </TextBox.BorderBrush>

或只使用现有的转换器颜色 - &gt; SolidColorBrush

<TextBox BorderBrush="Red" Text="bla bla" />

编辑:

如果您希望所有控件都具有相同的Border,您可以将Brush添加到容器对象的ResourceDictionary并将其重用于所有控件......

<!-- Add the Brush as resource to the surrounding window -->
<Window.Resources>
  <SolidColorBrush x:Key="controlBorderBrush" Color="Gray" />
</Window.Resources>

<!-- -->
<TextBlock BorderBrush="{StaticResource controlBorderBrush}" Text="huhuuu" />
<otherlib:SpecialTextBlockWithOverriddenProps BorderBrush="{StaticResource controlBorderBrush}" Text="hahaaaaaaa" />