2011-09-16 23 views
4

私はWPFを初めて使用していて、まだ基本的な問題がいくつかあります。WPFでborderbrushをLinearGradientBrushに設定する

デフォルトの青い枠線になっているデバイスコンポーネントからのコントロールがあります。私のテキストボックスなどは、より灰色の色をしています。私はdevcomponentsコントロールが同じ境界線を持つようにしたい。

私はテキストボックスのプロパティで見て、BorderBrushが「System.Windows.Media.LinearGradientBrush」に設定されていることがわかり、まだ私は置くことができない -

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

実際には、私は置くことができません -

魔法は何ですか?

ありがとうございました。

+0

LinearGradientBrushのインスタンスを使用してください。クラス名を指定するだけではありません。 – mdm20

答えて

10

プロパティBorderBrushには、名前で推測できるように、ブラシを割り当てる必要があります。 Brush

、一種をLinearGradientBrush(色の間のグラデーションを作るもの) SolidColorBrushも割り当てられます可能性がブラシの別の種類です。

この種類のコントロールのように見えますが、既にLinearGradientBrushが割り当てられています。 これで、選択したブラシを割り当てて、既に設定されているBrushを上書きすることができます。 LinearGradientBrushため

例:あなたはちょうどあなたがまた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" /> 

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" /> 
+0

ありがとうございますが、おそらく別の質問をする必要があります。私はXAML ""を持っていますが、BorderBrushは線形グラデーションブラシに設定されています。どうすれば別のコントロールに同じブラシを正確に割り当てることができますか?あなたは私にブラシを追加する方法を教えてくれましたが、TextBoxがデフォルトのブラシをどこから取得しているのかわからないので、他のコントロールで同じことをする方法がわかりません。ありがとう。 –

+0

「this.TimeInput.BorderBrush = this.HostTextBox.BorderBrush;」で「コードビハインド」でそれを行うことができます。おそらくそれは答えでしょうか? –

+0

あなたはそれを行うことができますが、それは本当にいいですね。あなたは何を定義するか制御を失います。私の編集を読む – fixagon

関連する問題