Laden...

WPF : Control Idee gesucht ähnlich PropertyGrid Designer

Erstellt von Ahrimaan vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.157 Views
A
Ahrimaan Themenstarter:in
350 Beiträge seit 2010
vor 12 Jahren
WPF : Control Idee gesucht ähnlich PropertyGrid Designer

Hallo zusammen,
ich möchte meinem Anwender die Möglichkeit geben in einem Tool gewisse Aufgaben zu definieren.
Dazu wollte ich ihm die Möglichkeit geben, ähnlich eines Property Grids, Propertys zu definieren.

Beispiel :
Der Anwender will eine neue Aufgabe erstellen.
Er definiert zB Ich rbauche Anrede , Nachname und Vorname

Anrede soll eine Combobox sein mit x Werten , Nachname eine TExtbox und Vorname eine Textbox.
Er soll also im Tool einen Designer nutzen.

Frage A.) Gibt es sowas schon und B.) wo ? ^^

Grüße

6.862 Beiträge seit 2003
vor 12 Jahren

Hallo,

bevor du an die Darstellung gehst, sollte erstmal klar sein wie du die Daten denn aufbaust und verwaltest. Die Anzeige ist ja dann trivial, schwieriger find ich hier, überhaupt ein generisches Datenhaltungskonzept zu entwerfen.

Wie hast du dir die Datenstruktur denn vorgestellt?

Achja, WPF PropertyGrids gibts auf codeplex.

Baka wa shinanakya naoranai.

Mein XING Profil.

A
Ahrimaan Themenstarter:in
350 Beiträge seit 2010
vor 12 Jahren

Hi talla,
ich würde, dass ganze PropertyGrid serialisieren und dann 1zu1 anzeigen lassen.

So spare ich mir die Datenstruktur um es so generisch wie möglich zu halten.

Grüße

6.862 Beiträge seit 2003
vor 12 Jahren

Hallo,

mit der Denke kommst du in WPF nicht weit (auch im allgemeinen ist sie einfach verkehrt).

Die Controls arbeiten normalerweise vollkommen unabhängig von irgendeiner Datenstruktur und stellen kaum Anforderungen. Stattdessen ist es der Programmierer der durch DataBinding und Styles/Templates vorgibt, wie das Control auszusehen hat und welche Daten es aus der Datenquelle wie bekommt. Sprich es gibt im allgemeinen überhaupt keine Datenstruktur wie du es erhoffst vorzufinden.

Beim PropertyGrid ist es in der Tat zwar ein wenig anders, aber nicht so wie du es dir erhoffst. Die PropertyGrids zeigen wie der Name schon sagt, Properties einer Klasse an. Von daher brauchst du doch deine Datenklasse um den PropertyGrid zu sagen welche Properties es anzuzeigen hat. Daher geht dein Plan so nicht. Ich halte PropertyGrids hier eh bissle fehl am Platz, weil das ja heißen würde, deine Datenklasse muss dynamisch Properties zugewinnen wenn du mehr anzeigen willst, und das liegt nunmal nicht in der Natur von C# 😃

Selbst wenn es all sowas gäbe, Controls zur Datenhaltung zu serialisieren ist großer Mist. Controls zeigen immer nur Daten an, enthalten sie aber nicht. Diesen Grundsatz darf man nie vergessen weil man in ein Haufen Probleme rennt, wenn man sich nicht dran hält.

Baka wa shinanakya naoranai.

Mein XING Profil.

A
Ahrimaan Themenstarter:in
350 Beiträge seit 2010
vor 12 Jahren

Hi talla,
so trivial wie ich das geschrieben habe, würde ich es mir natürlich nicht machen 😉
Wobei du recht hast, es scheint recht schwierig zu sein, diesen Wunsch zu erfüllen.

Theoretisch müsste ich einen Deisgner bauen, welcher aufgrund der angefügten Controls eine Datenstruktur baut.

Ob ich diesen Aufwand wirklich betreiben will/muss, dass steht in einem anderen Buch....

Dir/Euch fällt wahrscheinlich keine andere Möglichkeit ein, dieses Dilema zu lösen ?
Grüße

K
28 Beiträge seit 2009
vor 12 Jahren

Als Datenquelle werfe ich jetzt mal ein ExpandoObject in den Raum, welches man dann als XML persistiert.

R
41 Beiträge seit 2005
vor 12 Jahren

Hallo,

ich stand letztens vor einem ähnlichen Problem. Dabei hatte ich ungefähr 10 unterschiedliche Aktionen, die mit verschiedenen Einstellungen zu belegen waren. Ich hab mir dafür eine Klasse angelegt, in der eine Property den Typ der Aktion definiert hat und hatte eine Reihe von anderen Properties, die teilweise für mehrere Typen, teilweise nur zu ganz bestimmten Aktionen gehören.

Zur Darstellung und Einstellung hab ich ein DataGrid genommen mit einer Spalte. In dieser hab ich als Spaltentyp eine ComboBox eingebaut (DataGridTemplateColumn). Darüber hab ich mir den Typ der Aktion ausgewählt. Dann hab ich mir für jeden Typ ein DataTemplate gebaut in dem die entsprechenden Bindings auf die zu verwendenden Properties gesetzt werden. Wird eine Zeile des DataGrids angewählt wird über einen RowDetailsTemplateSelector das entsprechende DataTemplate ausgewählt, dass zur gewählten Aktion gehört...

Vielleicht wäre das ja auch ein Ansatz für dich, kommt halt drauf an, wie viele unterschiedliche Aufgaben du zu definieren hast.

Viele Grüße
redMars