我是WPF的新手,仍然遇到一些基本问题。

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

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

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


实际上,我不能放-

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


我想念什么魔术?

谢谢。

最佳答案

必须为属性BorderBrush分配一个Brush(可以通过其名称进行猜测)。

Brush的一种是LinearGradientBrush(在颜色之间形成渐变的东西)
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>


或仅使用现有的Converter Color-> SolidColorBrush

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


编辑:

而且,如果您希望所有控件都具有相同的边框,则可以向容器对象的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" />

10-04 20:43