2010-06-01 5 views
3

J'ai une fenêtre principale Window1.xaml; et après un événement, j'affiche un UserControl EditFile.xaml.Fermer le contrôle UserControl actuel

Le code se cache derrière:

public static int whichSelected = -1; 
private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    //searchEditPanel.Children.Clear(); 
    whichSelected = listViewFiles.SelectedIndex; 
    searchEditPanel.Children.Add(_EditFileControle);  //this is Grid 
} 

Et maintenant, comment puis-je fermer l'ouverture/ajoutée UserControl de son contenu en cliquant sur un bouton Annuler ou quelque chose comme ça?

Répondre

1

Avez-vous essayé?

searchEditPanel.Children.Remove(_EditFileControle); 

Une autre suggestion:

Peut-être que cela aide: http://sachabarber.net/?p=162

si elle n'a pas: Ajoutez une propriété à votre UserControl:

public UserControl ParentControl {get;set;} 

maintenant modifier votre code:

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    //searchEditPanel.Children.Clear(); 
    whichSelected = listViewFiles.SelectedIndex; 
    _EditFileControle.ParentControl = this; 
    searchEditPanel.Children.Add(_EditFileControle);  //this is Grid 
} 

Maintenant, vous devriez être en mesure de le faire:

// Somewhere in your UserControl 
if (this.ParentControl != null) 
    this.ParentControl.Children.Remove(this); 
+1

Oui - cela fonctionne, mais fonctionne à partir de parent (Window1). Je dois fermer UserControl de mes enfants (fichier EditFile.xaml.cs) en cliquant sur le bouton Annuler. – BlueMan

1

Vous pouvez définir la propriété Visibilité de la commande que vous souhaitez "fermer" à Réduit. De cette façon, il ne sera plus affiché mais sera toujours présent dans l'arbre visuel si vous devez le réutiliser plus tard.

2

Dans votre bouton gestionnaire de clic essayez:

Window parentWindow = (Window)this.Parent; 
parentWindow.Close(); 
+0

La référence d'objet n'est pas définie sur une instance d'un objet. – albatross

10
Window.GetWindow(this).Close(); 

Vous n'avez pas besoin d'utiliser une nouvelle variable, vous pouvez l'utiliser directement.

+0

Je me demandais juste ... est ce que l'événement 'UserControl.Unloaded' va déclencher? – IAbstract

Questions connexes