Autor |
Beitrag |
McFlayr
Hält's aus hier
Beiträge: 13
|
Verfasst: Mi 01.03.17 16:10
Hallo Community, ich habe eine UserControl in WPF mit eigenen Properties.
Soweit so gut. Der Einfachheit halber möchte ich, wenn es sich bei der Property um den Typ Color oder Brush handelt, die Farbauswahl über einen ColorDialog treffen. Eben so wie es bei den bestehenden WPF-Steuerelementen der Fall ist. Zum Beispiel bei der Auswahl der Hintergrundfarbe(Background) eines Grid.
Folgendermaßen sehen meine Properties aus, daran sollte erst einmal nichts auszusetzen sein.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| private Brush _captionColor;
[Fehlendes Attribute ???] [Browsable(true), Category("CaptionAppearance"), Description("Legt die Textfarbe der Caption fest")] public Brush captionColor { get { return _captionColor; } set { _captionColor = value; this.InvalidateVisual(); } } |
Meines Erachtens fehlt da nur ein Attribut, jedoch bin ich auch nach einiger Zeit googlen nicht fündig geworden.
Ich hoffe mir kann jemand helfen. Vielen Dank schon mal im Voraus.
|
|
Frühlingsrolle
      
Beiträge: 2164
Erhaltene Danke: 399
[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
|
Verfasst: Mi 01.03.17 19:17
Guten Abend McFlayr,
gibt es Probleme beim Setzen der Eigenschaft bzw. was soll jenes fehlende Attribut bewirken?
Soll es in etwa so aussehen?
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46:
| public class wpfUC : UserControl { private Label _label = new Label() { Content = "Überschrift", Foreground = Brushes.Red, Background = Brushes.LightSteelBlue, VerticalAlignment = VerticalAlignment.Top }; public wpfUC() { Width = 160; Height = 100; AddChild(_label); } [Browsable(true), Category("CaptionAppearance"), Description("Legt die Textfarbe der Caption fest")] public Brush CaptionForeColor { get { return _label.Foreground; } set { _label.Foreground = value; this.InvalidateVisual(); } } [Browsable(true), Category("CaptionAppearance"), Description("Legt die Hintergrundfarbe der Caption fest")] public Brush CaptionBackColor { get { return _label.Background; } set { _label.Background = value; this.InvalidateVisual(); } } [Browsable(true), Category("CaptionAppearance"), Description("Legt den Text der Caption fest")] public string Caption { get { return _label.Content.ToString(); } set { _label.Content = value; } } } |
Einloggen, um Attachments anzusehen!
_________________ „Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
|
|
McFlayr 
Hält's aus hier
Beiträge: 13
|
Verfasst: Do 02.03.17 11:08
Hallo Frühlingsrolle,
im Endeffekt möchte ich die Farbauswahl so treffen, wie es hier bei BorderBrush möglich ist.
Dieser ColorDialog steht mir bei meinen eigenen Properties nicht zur Verfügung. Auf deinem Bild sieht es fast so aus als wäre das mögich, zumindest hast du die Buttons mit dem Pfeil nach unten.
Das da ein Attribut fehlt, war mein nur eine Idee, das soll nicht heißen das dieses dort tatsächlich fehlt.
Beste Grüße
McFlayr
|
|
Frühlingsrolle
      
Beiträge: 2164
Erhaltene Danke: 399
[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
|
Verfasst: Do 02.03.17 16:03
In meinem Beispiel stellen die Eigenschaften CaptionForeColor und CaptionBackColor ebenso einen "Farbdialog" bereit, wenn man sie im Eigenschaften-Fenster setzt/selektiert.
Nachtrag:

Einloggen, um Attachments anzusehen!
_________________ „Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
Zuletzt bearbeitet von Frühlingsrolle am Do 02.03.17 21:19, insgesamt 1-mal bearbeitet
|
|
Th69
      

Beiträge: 3930
Erhaltene Danke: 803
Win7
C++, C# (VS 2015/17)
|
Verfasst: Do 02.03.17 18:27
Hallo McFlayr,
schau mal, ob es bei dir bei einem einfachen Testprojekt läuft. Und wenn ja, dann muß man die Unterschiede zu deinem aktuellen Projekt herausfinden.
|
|
McFlayr 
Hält's aus hier
Beiträge: 13
|
Verfasst: Mo 06.03.17 13:56
Hallo,
ich habe es bereits in einem Testprojekt, mit dem Code von Frühlingsrolle, getestet. Das Ergebnis ist auf dem Bild in meinem letzten Post zu sehen.
In einer WindowsForms-Anwendung kann ich die Farbauswahl über ein Farbdialog treffen sobald ich die Property vom Type Color definiere. So soll es nun auch in meiner WPF-Anwendung sein.
Da es bei Frühlingsrolle funktioniert, kann es an einer Einstellung im Projekt liegen? Ich habe die Projekteinstellung nicht verändert.
Vielleicht hat noch jemand eine Idee.
Beste Grüße
McFlayr
|
|
Frühlingsrolle
      
Beiträge: 2164
Erhaltene Danke: 399
[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
|
Verfasst: Mo 06.03.17 19:19
Lade doch mal das WPF-Projekt hoch und dann schauen wir es uns genauer an. Ob nun Color oder Brush verwendet wird, spielt hierbei keine Rolle:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7:
| public class wpfUC2 : UserControl { [Browsable(true)] public Color PropColor { get; set; } [Browsable(true)] public Brush PropBrush { get; set; } } |
Hast du die Eigenschaften zumindest markiert oder versucht sie im Fenster zu ändern?
_________________ „Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
|
|
McFlayr 
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 07.03.17 10:09
Guten Morgen,
das Problem war das Attribut "Category". Ich habe dieses jetzt nicht gesetzt sondern nur den Code von dir eingefügt und zumindest die PropBrush Property von Typ Brush wird mir in der Kategorie "Pinsel" angezeigt und ich kann meine Farbauswahl über den "FarbDialog" treffen. Die PropColor Eigenschaft wird in die Kategorie "Sonstiges" eingeordnet und lässt sich somit auch nicht auswählen. Ich habe das Attribut Category("Pinsel") bei PropColor gesetzt und nun erscheint diese zwar in der Pinsel Kategorie aber die Farbauswahl/Farbänderung wird nicht übernommen.
Auch wenn da jetzt nicht viel drin steht, das TestProjekt ist im Anhang zu finden.
Beste Grüße
McFlayr
Einloggen, um Attachments anzusehen!
|
|
Frühlingsrolle
      
Beiträge: 2164
Erhaltene Danke: 399
[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
|
Verfasst: Di 07.03.17 20:05
Einloggen, um Attachments anzusehen!
_________________ „Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
|
|