Laden...

WPF mein Content verschwindet ?

Erstellt von W077Y vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.432 Views
W
W077Y Themenstarter:in
2 Beiträge seit 2012
vor 12 Jahren
WPF mein Content verschwindet ?

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

5.657 Beiträge seit 2006
vor 12 Jahren

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());

Weeks of programming can save you hours of planning

1.552 Beiträge seit 2010
vor 12 Jahren

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

W
W077Y Themenstarter:in
2 Beiträge seit 2012
vor 12 Jahren

Ich hab die namen korrigiert und es geht immer noch nicht.

U
1.688 Beiträge seit 2007
vor 12 Jahren

Schau mal in die Debugger-Ausgabe, ob da Bindungsfehler oder Exceptions auftauchen.

M
81 Beiträge seit 2009
vor 12 Jahren

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.