我注意到当重写System.Windows.Window时,OnRender方法无法绘制到屏幕上。我确信这有一个很好的理由,但无法找到解释。为什么重写WPF Window.OnRender方法无法绘制到屏幕?
下面的代码说明了这一点:
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace WpfApplication1
{
public partial class Window1 : Window
{
Pen pen = new Pen();
public Window1()
{
InitializeComponent();
pen.Brush = Brushes.Black;
}
protected override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
dc.DrawRectangle(Brushes.Black, pen, new Rect(0, 0, 600, 400));
dc.DrawEllipse(Brushes.Green, pen, new Point(300, 300), 50, 50);
}
}
}
替换图逻辑在FrameworkElement的(然后设定元件作为窗口的内容)很好地工作。
感谢,
丹尼
“不知道为什么”并不真正回答这个问题,并且此修补程序不适用于使用MVVM的ItemsControl衍生产品 – user3690202 2016-11-25 19:59:40