Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
WPF mein Content verschwindet ?
W077Y
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

WPF mein Content verschwindet ?

beantworten | zitieren | melden

Verschwindet
Hi Ich habe folgendes Problem

Ich Möchte ein CustomControl schreiben (Digital_Control)

Image (Image.PNG)

durch den Klick auf den Button öffnet sich das Popup mit 6 Steuerbuttons

Image (Image.PNG)

Die Contens der einzelnen Buttons habe ich so Deklariert und kann sie auch

5x mit anderen Namen.

 
   private static readonly DependencyProperty _cont_center =
      DependencyProperty.Register("cont_center", typeof(FrameworkElement), typeof(Digital_Control),
      new FrameworkPropertyMetadata());

    public FrameworkElement Center
    {
      get
      {
        return (FrameworkElement)GetValue(_cont_center);
      }
      set
      {
        SetValue(_cont_center, value);
      }
    }
 


Nun habe ich im ControlTemplate die Bindings geschrieben:

...<Button x:Name="PART_MAIN"
                Content="{Binding Path=cont_center, RelativeSource={RelativeSource Mode=TemplatedParent}}">
   <Button.Background>

....   
   <Button x:Name="PART_CENTER" 
                Content="{Binding Path=cont_center, RelativeSource={RelativeSource Mode=TemplatedParent}}">
   </Button>
...

Und jetzt kommt meine Frage?
Wieso hat nach dem Öffnen des Popups, der Main Button keinen Content mehr?

Image (Image.PNG)

Danke im Voraus
Attachments
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5989
Herkunft: Leipzig

beantworten | zitieren | melden

Hi W077Y,

mein erster Gedanke ist, daß du das DependencyProperty falsch benannt hast:

private static readonly DependencyProperty _cont_center =
      DependencyProperty.Register("cont_center", typeof(FrameworkElement), typeof(Digital_Control),
      new FrameworkPropertyMetadata());

Die Naming Conventions sehen vor, daß es genauso heißen muß wie das zugehörige Property und auch öffentlich zugänglich sein muß, in deinem Fall also:

public static readonly DependencyProperty cont_centerProperty =
      DependencyProperty.Register("cont_center", typeof(FrameworkElement), typeof(Digital_Control),
      new FrameworkPropertyMetadata());

Wobei das ziemlich merkwürdig aussieht in meinen Augen, weil du ein öffentliches Property in Kleinschreibung deklarierst. Naming Conventions sind eine feine Sache.

Christian


// Edit:
Ich hab übersehen, daß du auch den Namen des Properties falsch angegeben hast beim Registrieren. Da dein Property Center heißt, muß das DependencyProperty CenterProperty heißen:

public static readonly DependencyProperty CenterProperty =
      DependencyProperty.Register("Center", typeof(FrameworkElement), typeof(Digital_Control),
      new FrameworkPropertyMetadata());
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von MrSparkle am .
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
xxMUROxx
myCSharp.de - Member

Avatar #avatar-3236.jpg


Dabei seit:
Beiträge: 1626
Herkunft: Südtirol/Italien

beantworten | zitieren | melden

Hallo W077Y,

zusätzlich zum gesagten vom MrSparkle welchem zuzustimmen ist müsste deine Property nicht Center sondern cont_center heißen.

Gruß
Michael
Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp
private Nachricht | Beiträge des Benutzers
W077Y
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

beantworten | zitieren | melden

Ich hab die namen korrigiert und es geht immer noch nicht.
private Nachricht | Beiträge des Benutzers
ujr
myCSharp.de - Experte



Dabei seit:
Beiträge: 1770

beantworten | zitieren | melden

Schau mal in die Debugger-Ausgabe, ob da Bindungsfehler oder Exceptions auftauchen.
private Nachricht | Beiträge des Benutzers
morbus85
myCSharp.de - Member



Dabei seit:
Beiträge: 84

beantworten | zitieren | melden

Ich würde evtl beim

new FrameworkPropertyMetadata()
noch ein OnChanged Event anhängen. Ich mach es immer mit dem Event, ist halt mehr Code, dafür kannst am Anfang ein Default Value angeben und durch die Änderung der Property nachvollziehen, was sich ändert oder nicht.
private Nachricht | Beiträge des Benutzers