2011-09-16 5 views
4

저는 WPF를 처음 사용하고 몇 가지 기본적인 문제가 있습니다.WPF에서 테두리 브러시를 LinearGradientBrush로 설정

나는 파란색 테두리가 기본값 인 devcomponents로부터 컨트롤을 가지고있다. 내 텍스트 상자 등은 회색 색상이 더 많습니다. devcomponents 컨트롤이 같은 경계를 가지기를 바랍니다.

나는 텍스트 상자의 속성에서보고 BorderBrush가 "System.Windows.Media.LinearGradientBrush"로 설정되어 있음을 볼 아직 내가 넣을 수 없습니다 -

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

사실, 내가 넣을 수 없습니다 -

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

어떤 마술이 빠졌습니까?

감사합니다.

+0

LinearGradientBrush .. 인스턴스를 사용하면 클래스 이름을 제공 할 수 없습니다. – mdm20

답변

10

속성 BorderBrush에 브러시를 지정해야합니다 (이름으로 추측 할 수있는 것처럼). Brush

한 종류의 SolidColorBrush도 할당받을 수있는 브러쉬의 또 다른 종류 인 LinearGradientBrush (색상과 그라데이션을 만드는 것)이다.

이 컨트롤은 이미 LinearGradientBrush으로 할당되어 있습니다. 이제 원하는 브러시를 지정하고 이미 설정 한 Brush을 재정의 할 수 있습니다. LinearGradientBrush A에 대한

예 : 당신은 또한 SolidColorBrush 사용할 수있는 솔리드 컬러로 국경을 원하는 경우에

<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> 

.

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

하거나 기존 컨버터 색상을 사용 ->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" /> 
+0

고마워요.하지만 다른 질문을 할 필요가 있습니다. XAML이 ""입니다. BorderBrush가 선형 그래디언트 브러시로 설정되어 있습니다. 정확히 같은 브러쉬를 다른 컨트롤에 어떻게 할당합니까? 브러시를 추가 할 수있는 방법을 보여 주었지만 TextBox에서 기본 브러시를 가져 오는 위치를 볼 수 없어 다른 컨트롤에서도 동일한 작업을 수행 할 수 없습니다. 감사. –

+0

"this.TimeInput.BorderBrush = this.HostTextBox.BorderBrush;"를 사용하여 "코드 숨김"에서이 작업을 수행 할 수 있다는 것을 깨달았습니다. 아마도 그것이 답일까요? –

+0

그걸 할 수는 있지만 그다지 좋지는 않습니다. 당신은 당신이 정의한 곳에서 통제권을 잃습니다. 내 편집 읽기 – fixagon

관련 문제