2011-09-14 25 views
3

OnRenderメソッドを使ってテキストボックスに下線を引っ張りたいが、その行はテキストボックスの後ろに描かれている。テキストボックスは不透明なので、下線は表示されません。テキストボックスの上に何かを描画するには?OnRender()をコントロールの上に描画する方法はありますか?

protected override void OnRender(DrawingContext dc){ 
    dc.DrawLine(new Pen(new LinearGradientBrush(Colors.Green, Colors.Blue, 0.0d), 2), new Point(0, Height - 4), new Point(Width, Height - 4)); 
} 

ところで、なぜ誰もが "base.OnRender(drawingContext);"彼らのOnRender()メソッドで?それは私のために何も変わらない。

テキストがない場合でも下線を描画する必要があるため、TextDecorationを使用することはできません。

編集:

が美しい解決策ではないかもしれないが、良い方法はありませんようにそれはそう: OnRender()メソッドは、バックグラウンド、その後、ラインを描画します。 TextBox Backgroundプロパティはnullに設定されているため、背景は再び描画されません。

答えて

0

ちょうどgess:あなたの行を描画する前にbase.OnRender()を呼び出すためにtryiedしていますか?オーバーライドで

+0

はい、私はそれが何もしない、言ったように。どこに置いても問題ありません。 – Markus

0

方が良い常にあなたがそれを削除した場合、あなたのオーバーライドはすべて、ベースクラスではないでしょうレンダリング/描くために持っているあなたのケースのように

base.OnRender(dc); 

、基本メソッドの呼び出しを残すだろうと同じよう何かをレンダリングする。一般的には使用パターンやシナリオに依存しますが、一般的にそれを削除するのは危険です。

編集:あなたの質問のためとして、それはWPFのTextBoxのレンダリング動作をカスタマイズ/オーバーライドすることは容易ではないようで、私はこの1つを見つけた:

Customizing WPF TextBox Not Easy, But Possible

+0

ありがとうございます、できるだけ早くあなたのリンクを見ていきます。 Wordpressは仕事場でブロックされています。 – Markus

関連する問題