5

我有一个 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?

4

5 回答 5

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

不需要使用新变量,直接使用即可。

于 2014-07-03T06:56:51.623 回答
2

您可以将要“关闭”的控件的Visibility属性设置为Collapsed

这样它就不会再显示了,但如果您以后需要重用它,它仍然会出现在可视化树中。

于 2010-06-01T11:26:13.710 回答
2

在您的按钮单击处理程序中尝试:

Window parentWindow = (Window)this.Parent;
parentWindow.Close();
于 2013-11-13T22:23:04.013 回答
1

你试过这个吗?

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);
于 2010-06-01T11:27:51.847 回答
0
private void Button_Click(object sender, RoutedEventArgs e)
{

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

}
于 2019-01-23T16:33:18.707 回答