Autor Beitrag
McFlayr
Hält's aus hier
Beiträge: 13



BeitragVerfasst: 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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: 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?

_wpfUC_captionColor

ausblenden volle Höhe C#-Quelltext
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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: 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.

user defined image

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: 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:

wpfUC_captionColor2
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 3930
Erhaltene Danke: 803

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Mo 06.03.17 13:56 
Hallo,

ich habe es bereits in einem Testprojekt, mit dem Code von user profile iconFrü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 user profile iconFrü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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: Di 07.03.17 20:05 
Danke, der Dateianhang war mehr als ausreichend.

ausblenden C#-Quelltext
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:
public partial class UserControl1 : UserControl // das partial kommt weg

    //[Browsable(true), Category("Pinsel")] 
    //public Color PropColor { get; set; } 
    
    //[Browsable(true), Category("Pinsel")] 
    //public Brush PropBrush { get; set; } 
     
    [Browsable(true), Category("Pinsel")] 
    public Brush PropBrushFore 
    { 
        get { return this.Foreground; } 
        set { this.Foreground = value; } 
    } 
     
    [Browsable(true), Category("Pinsel")] 
    public Brush PropBrushBack 
    { 
        get { return this.Background; } 
        set { this.Background = value; } 
    } 
     
    public UserControl1() 
    { 
        //InitializeComponent(); 
    } 
}


UserControl1_Color
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)