爲了測試如何在OnRender中的其他控件上繪製,我創建了自己的基於TextBox的控件,並決定覆蓋它的OnRender方法。但似乎從來沒有叫。WPF控件OnRender覆蓋
下面是簡單的類我有:
public class MyTextBox : TextBox
{
protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
{
Console.WriteLine("OnRender");
//base.OnRender(drawingContext);
Rect bounds = new Rect(0, 0, 100, 100);
Brush brush = new SolidColorBrush(Colors.Yellow);
drawingContext.DrawRectangle(brush, null, bounds);
}
}
我在XAML中聲明該類:
<local:MyTextBox Height="118" Margin="10,300,10,10" Text="TextBox" VerticalAlignment="Bottom" AcceptsReturn="True" Padding="0,0,200,0" FontSize="18" TextWrapping="Wrap" />
但目前還沒有跡象表明,所謂的OnRender甚至一次。我錯過了什麼?在其他控件上進行自定義繪圖的最佳選擇是什麼?
你嘗試改變使用控件模板的外觀?我覺得您需要更多地瞭解WPF上提供的功能。 OnRender更多來自WinForm World – CarbineCoder
您可能需要查看[adorners](http://msdn.microsoft.com/zh-cn/library/ms743737(v = vs.110).aspx)以繪製控件。如果你想要驗證的目的,看看[這篇文章](http://codeblitz.wordpress.com/2009/05/08/wpf-validation-made-easy-with-idataerrorinfo/ )。 –
其實我來自可可世界。 WPF中的一些概念對我來說是非常新穎的:-( – dmitrynikolaev