none
Aus XAML auf eine Property der Klasse zugreifen RRS feed

  • Frage

  • Hallo!

    Ich habe in der Codebehind eine Property definiert:

    System.Windows.Media.

    BrushcolBtnFGNormal = newSystem.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 32, 102, 198));


    Nun möchte ich in XAML einem Objekt diese Property zuordnen.

    <

    SetterProperty="Background"Value= "{lok:colBtnFGNormal}"

    Lokalen Namespace deklariert und Property angegeben, aber es kommt folgende Fehlermeldung:

    Das Tag "colBtnFGNormal" ist im XML-Namespace "clr-namespace:Anruf_Info.Properties" nicht vorhanden.

    Der Namespace ist im XAML folgendermaßen deklariert:

          

    xmlns:lok="clr-namespace:Anruf_Info"


    Was mache ich nicht richtig?

    Das Property ist zentral unter   

    public partialclass  MainWindow: Window
        {

    ...

    deklariert.

    Ich habe den Zugriff in XAML so geändert:

    Value="{x:Static lok:MainWindow.colBtnFGNormal}"

    Und erhalte die Fehlermeldung:

    Der statische Member "colBtnFGNormal" wurde nicht im Typ "MainWindow" gefunden. 


    • Bearbeitet perlfred Mittwoch, 25. Juli 2012 13:26 Formatierung
    Mittwoch, 25. Juli 2012 12:11

Antworten

  • Hallo
    Wenn Du {x:Static ...} verwendest muss die Variable selbst "static" sein,
    also etwa:

    using System.Windows.Media;
    
    class MainWindow
    {
    
        public static Brush colBtnFGNormal = new SolidColorBrush(Color.FromArgb(255, 32, 102, 198));
    
        //...

    Btw du kannst die Brush auch als Resource in XAML definieren und dann als StaticResource einbinden.

    Chris
    • Als Antwort markiert perlfred Mittwoch, 25. Juli 2012 14:12
    Mittwoch, 25. Juli 2012 13:40

Alle Antworten

  • Hallo,

    vielleicht bin ich zu sehr ins Detail gegangen...

    Ich habe eine ganz einfache Frage:

    Wenn ich in der CodeBehind (des WPF-Fensters) eine Farbe (Brush) definiert habe, wie kann ich diese in einem Style in XAML ansprechen???

    Mittwoch, 25. Juli 2012 13:23
  • Hallo
    Wenn Du {x:Static ...} verwendest muss die Variable selbst "static" sein,
    also etwa:

    using System.Windows.Media;
    
    class MainWindow
    {
    
        public static Brush colBtnFGNormal = new SolidColorBrush(Color.FromArgb(255, 32, 102, 198));
    
        //...

    Btw du kannst die Brush auch als Resource in XAML definieren und dann als StaticResource einbinden.

    Chris
    • Als Antwort markiert perlfred Mittwoch, 25. Juli 2012 14:12
    Mittwoch, 25. Juli 2012 13:40
  • Hallo Christian!

    Klappt Super! Den anderen Weg (Brush als XAML-Resource) wollte ich nicht gehen, da ich alle Konstanten in der Codebehind definiere.

    Ich habe jetzt ebenfalls den Umkehrschluß, die Styles in der Codebehind zu definieren begonnen zu gehen, aber das ist natürlich aufwendiger!

    Nochmals vielen Dank für deine Hilfe!!!

    Fred.

    Mittwoch, 25. Juli 2012 14:17