WPF 传递窗口作为变量

本文关键字:变量 窗口 WPF | 更新日期: 2023-09-27 18:31:37

我有4个窗口。
1. 主题电影.xaml
2. 特定电影.xaml
3. 搜索电影.xaml
4. 视频播放器.xaml

所有前 3 个窗口都可以打开第四个窗口。
我想知道当第四个打开时,哪个打开了第四个并将其存储在变量中(稍后使用它 - 我想像那样使用它:发件人(作为窗口)。Show()),类似于:

Window sender;
public VideoPlayer(Window s)
{
    InitializeComponent();
    sender = s;
}
private void GoBack()
{
    this.Hide();
    sender.Show();
}

WPF 传递窗口作为变量

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

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

VideoPlayer内部,您可以通过以下方式访问它 this.Owner .

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

我重新评论了孩子的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();
}