2010-12-05 13 views
0

Ich habe ein benutzerdefiniertes WPF-Benutzersteuerelement namens TimeoutPanel, das ich zu verwenden versuche. Wenn ich versuche, es aus der CS-Datei zu meinem Fenster hinzuzufügen, wird es jedoch nicht angezeigt.Benutzerdefiniertes Benutzersteuerelement wird nicht im WPF-Fenster angezeigt?

Ich muss in der Lage, einen Griff an das Fenster zu erhalten, die das Timeout-Bildschirm besitzt.

TimeoutPanel tp = new TimeoutPanel(this); 
tp.Visibility = Visibility.Visible; 

Ich würde es wirklich schätzen, wenn jemand bitte darauf hinweisen könnte, was ich falsch mache!

Edit: Hier ist der Konstruktor für meine TimeoutPanel

public TimeoutPanel(Window parent) 
{ 
    this.InitializeComponent(); 
    parentWindow = parent; 
} 

ich es mit dem folgenden Code in der CS-Datei für ein Homescreen-Fenster anzurufenden:

TimeoutPanel tp = new TimeoutPanel(this); 
MainGrid.Children.Add(tp); 

Es stürzt mit Ausnahme : Weitere Informationen: Objekt des Typs 'TicketBooth.TimeoutPanel' kann nicht erstellt werden. CreateInstance ist fehlgeschlagen, was dadurch verursacht werden kann, dass für 'TicketBooth.TimeoutPanel' kein öffentlicher Standardkonstruktor vorhanden ist. Fehler beim Objekt 'System.Windows.Controls.Grid' in Markup-Datei 'TicketBooth; Komponente/homescreen.xaml' Linie 174 Position 10.

Dank!

+0

Ah, tut mir leid, habe ich es! Die Ausnahme war ein Tippfehler von mir ... Es scheint jetzt zu funktionieren! Danke für Ihre Hilfe! – ksamurai

Antwort

1

Was Sie in nicht tun würde plazieren Sie dieses UserControl im Fenster Ihrer WPF-Anwendung. Sie müssen das UserControl auf einem untergeordneten Element in Window platzieren. Durch Festlegen der Sichtbarkeit wird das Benutzersteuerelement nicht tatsächlich als untergeordnetes Element eines Containers platziert.

Meine Vermutung ist, dass ein Grid Container innerhalb des Fensters ist. Wenn ja; Um Ihr UserControl zum Grid hinzuzufügen, fügen Sie es einfach als Kind in das Grid ein. Sie müssen Ihr Grid benennen, bevor Sie es in dem Code hinter ...

TimeoutPanel tp = new TimeoutPanel(this); 
myGrid.Children.Add(tp); 
0

Sie brauchen dieses Steuerelement der einige übergeordnete Steuer Sammlung hinzuzufügen.

Angenommen, Sie haben einen Stackpanel stckPanel in Ihrem Hauptfenster genannt also, wenn Sie diese Steuerung erstellt zeigen wollen unter diesem Stapel Platte, müssen Sie folgenden Code tun

TimeoutPanel tp = new TimeoutPanel(this); 
stckPanel.Children.Add(tp); 
+0

Danke für die Rückmeldung! Dadurch stürzt es jedoch ab. Ich habe jedoch bemerkt, dass es funktioniert, wenn ich den Parameter aus dem Konstruktor entferne (nicht wirklich sicher, warum er den Parameter nicht mag). Vielleicht ist der beste Ansatz ist, einfach eine zweite Methode aufrufen, nachdem es der Einrichtung zu meinem Parameter übergeben wie: TimeoutPanel tp = new TimeoutPanel(); tp.passPartent (this); Es wäre toll, wenn Sie erklären könnten, warum es mit einem Parameter jedoch abstürzt! Vielen Dank! – ksamurai

+0

@Kim Schreiben Sie die Ausnahme und was Sie mit dieser Referenz im Ctor –

+0

@Aaron Okay, aktualisiert meinem ursprünglichen Beitrag tun, damit Sie sehen können. Vielen Dank. – ksamurai

Verwandte Themen