Ho notato che quando si sovrascrive il metodo System.Windows.Window OnRender non riesce a disegnare sullo schermo. Sono sicuro che c'è una buona ragione per questo, ma non sono riuscito a trovare la spiegazione.Perché sovrascrive la finestra di WPF. Il metodo Onender non riesce a disegnare sullo schermo?
Il codice seguente dimostra questo:
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);
}
}
}
sostituendo la logica disegno in un FrameworkElement (quindi impostando l'elemento come il contenuto di una finestra) funziona bene.
grazie,
Danny
"non so perché" in realtà non risponde alla domanda e questa correzione non funziona per i derivati ItemsControl che utilizzano MVVM – user3690202