| 

.NET C# Java Javascript Exception

3
Ich möchte gern ein "Customized Window" (ohne Windows Chrome) mit eigenem Style erstellen, bei dem ich selbst das Resize berechne. Das Problem ist aber, dass beim Resize der linken oberen Ecke die location "Left" und "Top" sowie die "Width" und "Height" gleichzeitig geändert werden müssen. Das Ergebnis ist ein flackern, da das WPF Rendering bereits bei der ersten Wertzuweisung versucht ein Rendering zu starten bzw. die Wertzuweisungen in der Rendering Pipiline nacheinander zugewiesen werden. Da das Laut WPF Architektur aber eigenlich so nicht sein sollte, vermute ich, dass das Win32 Rendering und das WPF Rendering sich überschneiden (asynchrone Verarbeitung). Berechne ich die rechte untere Ecke ist alles bestens, da nur "Width" und Height" verändert werden müssen, und das Window die Position nicht ändert.
Folgende Fragen, die ich gern beantwortet hätte:
Warum ist das so, bzw. was ist die Urache (Asynchrones Rendern?)?
Kann man erreichen, dass alle Werte geändert werden, und erst dann ein Renderprozess stattfindet?
Kann man überhaupt den Render Thread schlafen legen (Suspend)?
Momentan lege ich den UI Thread für einige Zeit schlafen (Thread.Sleep(10)), das bringt Linderung des Flackerns aber ist nicht die wirkliche Lösungsfindung des Problems. Was kann man hier noch machen?
In anderen Foren finden sich diverse Lösungsvorschläge, von Thread.Sleep(), über: uiElement.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Render, EmptyDelegate) bis hin zu geht nicht, also nutze nur die rechte Seite. Gibt es hier eine andere konstruktive Erfahrung?
Übrigens tritt das Flackern auch bei einem simplen WPF Standard Window auf, wenn man einen Button an die rechte seite heftet und dann das Window in der Größe ändert. Dann wackelt und flackert der Button verzögert in seiner Position. Wer kann hier helfen?

Randbemerkung:
Das ist bei aller klasse WPF Architektur schon armselig von Microsoft, dass solche simplen Window Resize-Vorgänge nicht sauber funktionieren. nichtmal der File Explorer bekommt das richtig hin und der ist in WIN32 geschrieben, soviel ich weiss. Das das auch "butterweich" geht, zeigt OSx von Apple. Da sind die Fenstergrößenänderugen einfach perfekt umgesetzt.
Warum geht das bei WPF nicht?
News:
24.08.2012
es243040 69 1 2
1 Antwort
-1
Hi, gibt es auf dieser Platform jemanden der Ahnung hat in diesem Bereich?
Nicht einen Kommentar bzw. Antwort in 1 Woche (schwach)!
Habe es mittlerweile selber ganz gut hinbekommen. Stichwort Refresh() using eine DWM-API zusammen it Thread.Sleep(). Ist aber nur eine Kaschierung von WPF Microsoft Problemen, nicht wirklich die Lösung. Vielleicht erbarmt sich ja doch noch jemand und probiert mal das geschilderte. Danke im Voraus...
31.08.2012
es243040 69 1 2

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH