Windows XP中的WPF Child Windows问题

时间:2011-09-18 06:58:50

标签: wpf windows-xp

我编写了一个WPF程序,当用户点击一个按钮时,会弹出一个新窗口。

我尝试使用 Show() ShowDialog()功能显示新窗口。

Windows 7 中,当用户关闭子窗口时,主窗口将保留,程序将不会退出。这种行为就是我想要的。

但是,当程序在 Windows XP 中运行时,当用户关闭子窗口时,主窗口将一起关闭,整个程序将退出。

我试图在Window类的不同属性中设置不同的值,最后,我发现只有在子窗口中将属性“ShowInTaskbar”设置为“False”时程序才会退出

但是,如果将ShowInTaskbar设置为false,则用户无法在任务栏中找到该行为,这不是我想要的行为。

我想拥有的非常简单。我只是希望Windows XP中运行的程序与用户关闭子窗口时在Windows 7中运行的程序具有相同的行为(即当用户关闭子窗口时主窗口不会退出)。另外,我想在任务栏中为新创建的子窗口输入一个条目(即 ShowInTaskbar = true )。

有没有人对这个问题有任何想法?

主窗口

<Window x:Class="ChildWindowTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Button Click="OpenChild">Open Child Window</Button>
</Grid>
</Window>

MainWindow代码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void OpenChild(object sender, RoutedEventArgs e)
    {
        ChildWindow child = new ChildWindow();
        child.Owner = this;
        //child.ShowInTaskbar = false; <--- if comment, the program will exit, when child window closed
        child.Show();
    }
}

子窗口:

<Window x:Class="ChildWindowTest.ChildWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="ChildWindow" Height="300" Width="300">
<Grid>

</Grid>

子窗口代码:

public partial class ChildWindow : Window
{
    public ChildWindow()
    {
        InitializeComponent();
    }
}

2 个答案:

答案 0 :(得分:1)

根本不是一个优雅的解决方案,但您始终可以在应用程序类中订阅Closing事件,并在事件处理程序中取消关闭应用程序。

答案 1 :(得分:0)

在致电childWindow.Owner之前,您确定已将childWindow.ShowDialog()设置为我们的MainWindow吗?