Laden...

Wie funktioniert die Visualisierung von WPF Controls

Erstellt von Doltsche vor 11 Jahren Letzter Beitrag vor 11 Jahren 4.355 Views
D
Doltsche Themenstarter:in
249 Beiträge seit 2009
vor 11 Jahren
Wie funktioniert die Visualisierung von WPF Controls

Hallo Community

Ich würde gerne versuchen selber ein Chart control in WPF zu entwickeln.
Welche Art von Chart es sein soll spielt zur Zeit keine Rolle. Meine Frfage betrifft eher das Zeichnen.

Das Chart control würde ich gerne direkt unter System.Windows.Controls.Control ansetzen. Mir ist allerdings gänzlich unklar, wie ich dort etwas grafisch darstellen kann. Ich habe über den Sourcecode der vorhandenen WPF Controls geschaut (Referenz Sourcecode) in der Hoffnung, etwas zu finden. Da wurde ich leider endtäuscht.

In den *.cs Dateien der WPF controls is absolut nichts von Rendering oder dergleichen zu finden. Ich hätte beispielsweise beim Buttoncontrol sowas wie eine OnRender-Methode erwartet, wo der Hintergrundverlauf für den Button erstellt wird. Offenbar müssen sich diese Angaben in einer *.XAML-Datei befinden, die im Referenz Sourcecode allerdings nicht vorhanden sind. Daraus folgt aber wiederum die Frage, wo diese XAML-Datei geladen wird?

Meine Frage lautet daher, wo der visuelle Teil von WPF controls definiert und geladen wird?

Freundliche Grüsse

Samuel

5.657 Beiträge seit 2006
vor 11 Jahren

Hi Doltsche,

bevor du eigene Controls erstellen willst (und vor allem so komplexe wie Charts), solltest du dich zuerst einmal mit den Grundlagen von WPF beschäftigen. Offenbar hast du noch völlig falsche (Windows-Forms-behaftete) Vorstellungen, wie das dort funktioniert.

Christian

Weeks of programming can save you hours of planning

1.552 Beiträge seit 2010
vor 11 Jahren

Hallo Doltsche,

ich kann MrSparkle nur zustimmen und dir einige Stichworte auf den Weg geben. Das was du suchst fällt unter CustomControls, bei welchen du zur genüge Tutorials findest. Der Style wird generell in der Generics.xaml erstellt. Weiteres solltest du dich sehr gut in DependencyProperties einlesen.
Sollte alle diese Grundkenntnisse nicht vorhanden sein wird es leider nichts mit dem Erstellen einer eigenen Komponente.

Gruß
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

D
Doltsche Themenstarter:in
249 Beiträge seit 2009
vor 11 Jahren

Hallo

Besten Dank für euere Antworten 😉.

Freundliche Grüsse

Samuel

D
Doltsche Themenstarter:in
249 Beiträge seit 2009
vor 11 Jahren

Hm, ich lag doch richtig mit meinem OnRender().
Ich habe erst später im VisualTree entdeckt, dass sich unterhalb des Buttons ein ButtonChrome ansiedelt. Der Quellcode dieser Klasse wiederum beinhaltet sämtliche prozeduralen Methoden, daneben OnRender() zum Zeichnen des Buttons 😉.

Gruss Samuel

6.862 Beiträge seit 2003
vor 11 Jahren

Das OnRender ist nur die halbe Wahrheit. Dort gibt man an, was man gerne gezeichnet hätte. Was am Ende rauskommt, kann wesentlich anders sein, da durch z.B. Transparenzen, Animationen, Transformationen oder Effekte, der Output noch vor dem Rendern geändert werden kann.

Selber brauch man im OnRender aber nur ganz selten zeichnen, nur für so LowLevel Sachen wie z.B. den ButtonChrome. In WPF werden Controls in der Regel durch Komposition erstellt, siehe ja auch dein Button welcher ein ButtonChrom nutzt + Ein ContentPresenter für den Inhalt etc.

Baka wa shinanakya naoranai.

Mein XING Profil.

699 Beiträge seit 2007
vor 11 Jahren

Mein Tip, bevor Du über das selbst erstellen eines Control in WPF nachdenkst, solltest Du zumindest einmal ein WPF Buch gelesen haben.

Bei WPF ist nichts mehr so, wie man das von WinForms kennt.