我注意到當重寫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