2011-01-17 4 views
1

Ich habe ein Benutzersteuerelement, das eine Textbox enthält, und ich verwende eine klare Schaltfläche auf meinem Hauptformular, um Informationen aus dem gesamten Hauptfenster zu löschen. Ich möchte das Textfeld im Benutzersteuerelement löschen, sobald der Clear-Button ebenfalls angeklickt wird. Ich habe keinen einfachen Weg gefunden, dies zu tun. Ich habe versucht, den Namen des Steuerelements in C#, gefolgt von einem "." Der Name des Textfelds wird jedoch nicht angezeigt. jede Hilfe würde geschätzt werden!Wie lösche ich ein Textfeld in einem Benutzersteuerelement in WPF C#?

Antwort

1

WPF deklariert Kontrollen in einer UserControl als private. Um Ihre TextBoxpublic Sie erklären es mit einem FieldModifier wie in:

<TextBox x:FieldModifier="Public" /> 

wo x ist der XAML-Namespace xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml". Die empfohlene Methode zum Löschen einer TextBox besteht jedoch darin, sie an eine Eigenschaft zu binden und anschließend die Eigenschaft zu löschen.

+0

genial, genau das, was ich gesucht habe, danke! – Drew

1

Sie sollten nicht versuchen, aus externen Klassen oder Code direkt auf Steuerelemente in einem UserControl zuzugreifen. Der einfache Mechanismus wäre, dem UserControl eine Clear() - Methode hinzuzufügen, die alle relevanten Steuerelemente und Informationen im UserControl löscht.

+0

ok Ich habe eine Methode erstellt, gibt es eine Möglichkeit, ich kann es aus dem Hauptfenster CS-Datei zugreifen? – Drew

+0

Die Clear() - Methode sollte idealerweise in die Datei UserControl.xaml.cs (als public) gehen, unter der Annahme, dass es sich um ein von Ihnen erstelltes UserControl handelt. Dann können Sie die TextBox ganz einfach löschen. Wenn das UserControl DataBinding verwendet, sollten Sie sicherstellen, dass das gebundene Element deaktiviert ist. – Ryan

1

Die Textbox könnte an den DataContext des UserControl gebunden sein. Eine Möglichkeit zum Löschen besteht daher darin, die Eigenschaft, die an die Text-Eigenschaft von TextBox gebunden ist, auf eine leere Zeichenfolge festzulegen.