Закрыть текущий UserControl
У меня есть главное окно Window1.xaml; и после некоторого события я отображаю UserControl EditFile.xaml.
Код позади:
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
}
А теперь, как я могу закрыть открытый / добавленный UserControl из его содержимого, нажав кнопку "Отмена" или что-то в этом роде?
5 ответов
Вы пробовали это?
searchEditPanel.Children.Remove(_EditFileControle);
Другое предложение:
Может быть, это поможет: http://sachabarber.net/?p=162
если это не так: добавьте свойство в свой UserControl:
public UserControl ParentControl {get;set;}
Теперь измените ваш код:
private void button1_Click(object sender, RoutedEventArgs e)
{
//searchEditPanel.Children.Clear();
whichSelected = listViewFiles.SelectedIndex;
_EditFileControle.ParentControl = this;
searchEditPanel.Children.Add(_EditFileControle); //this is Grid
}
Теперь вы должны быть в состоянии сделать это:
// Somewhere in your UserControl
if (this.ParentControl != null)
this.ParentControl.Children.Remove(this);
Window.GetWindow(this).Close();
Вам не нужно использовать новую переменную, вы можете использовать ее напрямую.
В вашем обработчике нажатия кнопки попробуйте:
Window parentWindow = (Window)this.Parent;
parentWindow.Close();
Вы можете установить свойство Visibility элемента управления, который вы хотите "закрыть" для Collapsed.
Таким образом, он больше не будет отображаться, но все равно будет присутствовать в визуальном дереве, если вам понадобится использовать его позже.
private void Button_Click(object sender, RoutedEventArgs e)
{
(this.Parent as searchEditPanel).Children.Remove(this);
}