Я написал программу WPF, которая, когда пользователь нажимает кнопку, открывается новое окно.
Я пытался показать новое окно с помощью Show () или Функция ShowDialog () .
В Windows 7 , когда пользователь закрыл дочернее окно, главное окно останется, и программа не выйдет.Это поведение, которое я хочу иметь.
Однако, когда программа запускается в Windows XP , когда пользователь закрыл дочернее окно, главное окно будет закрыто вместе, и вся программабудет завершен.
Я попытался установить другое значение в разных свойствах в классе Windows, наконец, я обнаружил, что программа не выйдет, только когда я установлю для свойства "ShowInTaskbar" значение "False" в дочернем окне.
Однако, если для ShowInTaskbar задано значение false, пользователь не может найти запись на панели задач, которая не соответствует желаемому поведению.
Что я хочу получитьэто действительно просто.Я просто хочу, чтобы программа, работающая в Windows XP, имела то же поведение, что и программа, работающая в Windows 7, когда пользователь закрывал дочернее окно (т. Е. Главное окно не закрывалось, когда пользователь закрывало дочернее окно ).Кроме того, я хочу иметь запись в панели задач для вновь созданного дочернего окна (т.е. ShowInTaskbar = true ).
Кто-нибудь имеет какие-либо идеи по поводу этой проблемы?
MainWindow
<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();
}
}