WPF传递窗口作为变量

时间:2013-09-17 08:01:52

标签: c# wpf window

我有4个窗户 1. SubjectMovies.xaml
2. SpecificMovies.xaml
3. SearchMovies.xaml
4. VideoPlayer.xaml

所有前3个窗口都可以打开第4个窗口 我想知道在打开第四个时将哪一个打开第四个并将其存储在变量中(以后再使用它 - 我想使用它:Sender(如Window).Show()),类似于:

Window sender;
public VideoPlayer(Window s)
{
    InitializeComponent();
    sender = s;

}

private void GoBack()
{
    this.Hide();
    sender.Show();
}

2 个答案:

答案 0 :(得分:2)

您想要设置VideoPlayer窗口的Owner属性。 从每个窗口打开它:

VideoPlayer vp = new VideoPlayer();
vp.Owner = this;

VideoPlayer内,您可以this.Owner访问它。

无需将其作为构造函数中的参数接收。

答案 1 :(得分:0)

我建议儿童使用ShowDialog来实现这一目标,因为孩子不应该对他的父母负责。

示例:

public void OpenVideoPlayer()
{
    VideoPlayer vp = new VideoPlayer();
    this.Hide();
    vp.ShowDialog();
    this.Show();
}

这样孩子就不依赖父母了。此外,如果您不想隐藏父级,而是将其最小化,则父级可以控制它。

有事件:

public void OpenVideoPlayer()
{
    VideoPlayer vp = new VideoPlayer();
    vp.Closed += vp_Closed;
    this.Hide();
    vp.Show();
}

void wnd_Closed(object sender, EventArgs e)
{
    this.Show();
}