Windows XP中的WPF子窗口问题

Windows XP中的WPF子窗口问题,wpf,windows-xp,Wpf,Windows Xp,我已经编写了一个WPF程序,当用户单击一个按钮时,一个新窗口将弹出 我已尝试使用show()或ShowDialog()函数来显示新窗口 在Windows 7中,当用户关闭子窗口时,主窗口将保留,程序不会退出。这种行为正是我想要的 但是,当程序在Windows XP中运行时,当用户关闭子窗口时,主窗口将一起关闭,整个程序将退出 我尝试在Window类的不同属性中设置不同的值,最后,我发现只有在子窗口中将属性“ShowInTaskbar”设置为“False”时,程序才会退出 但是,如果ShowInT

我已经编写了一个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>

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

在调用
childWindow.ShowDialog()之前,您是否确保已将
childWindow.Owner
正确设置为主窗口

能否添加重现此问题的简单代码?我使用过XP和WIN7,从未见过这样的行为。。。尝试使用父窗口和子窗口创建一个非常简单的项目,看看它是否发生在那里
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();
    }
}