Установка пограничной кисти для LinearGradientBrush в WPF - PullRequest
4 голосов
/ 16 сентября 2011

Я новичок в WPF и у меня все еще есть некоторые основные проблемы.

У меня есть контроль от devcomponents, который по умолчанию имеет синюю рамку. Мои текстовые поля и т.д. имеют более серый цвет. Я хочу, чтобы элемент управления devcomponents имел ту же границу.

Я смотрю в свойствах TextBox и вижу, что BorderBrush установлен на "System.Windows.Media.LinearGradientBrush", но я не могу поставить -

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

На самом деле я не могу поставить -

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

Какую магию мне не хватает?

Спасибо.

1 Ответ

11 голосов
/ 16 сентября 2011

Свойству BorderBrush необходимо назначить кисть (как можно догадаться по ее названию).

Один вид 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>

или просто используйте существующий конвертер цвета -> SolidColorBrush

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

EDIT:

И если вы хотите, чтобы все ваши элементы управления имели одинаковую границу, вы можете добавить кисть к 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" />
...