Закрыть текущий UserControl - PullRequest
4 голосов
/ 01 июня 2010

У меня есть главное окно 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 ]

13 голосов
/ 03 июля 2014
Window.GetWindow(this).Close();

Вам не нужно использовать новую переменную, вы можете использовать ее напрямую.

2 голосов
/ 14 ноября 2013

В вашем обработчике нажатий кнопок попробуйте:

Window parentWindow = (Window)this.Parent;
parentWindow.Close();
2 голосов
/ 01 июня 2010

Вы можете установить Visibility элемента управления, который вы хотите "закрыть", на Collapsed .

Таким образом, он больше не будет отображаться, но все равно будет присутствовать в визуальном дереве, если вам понадобится использовать его позже.

1 голос
/ 01 июня 2010

Вы пробовали это?

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);
0 голосов
/ 23 января 2019
private void Button_Click(object sender, RoutedEventArgs e)
{

    (this.Parent as searchEditPanel).Children.Remove(this);

}
...