Meine Antwort basiert auf einem answer für Windows Forms 8+ Jahre zurück geschrieben.
I die gleiche Logik aus dieser Antwort und erzeugt Erweiterungsmethode auf dem Root-Grid eine Schleife durch und klare Werte jedes Elements verwendet (es Imitieren die UserControl
wieder in seinen normalen Zustand zu bringen)
Unten ist die Erweiterungsmethode
public static class Extensions
{
private static Dictionary<Type, Action<UIElement>> controldefaults = new Dictionary<Type, Action<UIElement>>()
{
{typeof(TextBox), c => ((TextBox)c).Text = String.Empty},
{typeof(CheckBox), c => ((CheckBox)c).IsChecked = false},
{typeof(ComboBox), c => ((ComboBox)c).SelectedIndex = 0},
{typeof(ListBox), c => ((ListBox)c).Items.Clear()},
{typeof(RadioButton), c => ((RadioButton)c).IsChecked = false},
};
private static void FindAndInvoke(Type type, UIElement control)
{
if (controldefaults.ContainsKey(type))
{
controldefaults[type].Invoke(control);
}
}
public static void ClearControls(this UIElementCollection controls)
{
foreach (UIElement control in controls)
{
FindAndInvoke(control.GetType(), control);
}
}
public static void ClearControls<T>(this UIElementCollection controls) where T : class
{
if (!controldefaults.ContainsKey(typeof(T))) return;
foreach (UIElement control in controls)
{
if (control.GetType().Equals(typeof(T)))
{
FindAndInvoke(typeof(T), control);
}
}
}
}
Für die Verwendung geben Sie dem RootGrid einen Namen. Sagen Sie rootGrid
. Also alles, was Sie rufen müssen, ist
rootGrid.Children.ClearControls();
Auch in anderen Antwort erwähnt Wie, wenn Sie bestimmte Steuerelemente löschen möchten, können Sie
rootGrid.Children.ClearControls<TextBox>();
verwenden können Sie die Extensions-Klasse finden auf meinem Gist
Viel Glück.
Vielen Dank für Ihren Vorschlag, leider kann dies nicht auf eine dynamische benutzerdefinierte Benutzersteuerelemente angewendet werden, einige Steuerelemente haben ihre eigenen Daten, die Methode, die ich suche, sollte wie eine neue Instanz der benutzerdefinierten Benutzersteuerung erstellen oder die Eltern fragen um es zu entfernen, füge ein neues mit demselben Namen hinzu. – Mhood