0

当我单击按钮打开一个窗口时,父窗口冻结。如果我再次最小化和最大化父窗口,它会再次正常工作。

系统配置

  • Windows 7、64 位操作系统。
  • .Net 框架 3.5 SP1
  • 视觉工作室快车 2008

以下是我可以重现此问题的简单应用程序。

Window1.xaml

<Window x:Class="WpfApplication1.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="Window1" Height="300" Width="300">
  <StackPanel>
    <TextBox Width="200"/>
    <Button Content="click" Click="Button_Click"/>
  </StackPanel>
</Window>

Window1.xaml.cs

namespace WpfApplication1 {
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window {
    public Window1() {
        InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e) {
        (new Window2()).ShowDialog();
    }
}
}

Window2.xaml

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

</Grid>
</Window>

如果我删除WindowStyle="ToolWindow"效果很好 !!!!!!

应用程序.xaml

<Application x:Class="WpfApplication1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml">
<Application.Resources>

</Application.Resources>
</Application>
4

4 回答 4

1

显示而不是显示对话框将起作用,但也许您的意图更像是一个子窗口,请参阅http://wpftoolkit.codeplex.com/wikipage?title=ChildWindow&referringTitle=Home了解详细信息。

于 2012-12-29T11:27:45.003 回答
1

调用ShowDialog()阻塞了你的 GUI 线程。

有关不阻塞主线程的替代方法,请参阅此问题。

于 2012-12-29T11:10:19.143 回答
1

使用Show而不是ShowDialog在模态模式下打开一个窗口

于 2012-12-29T11:11:00.173 回答
1

如果您使用 ShowDialog() 尝试将 Window1 设置为 Window2 的所有者:

        Window2 w = new Window2 { Owner = this };
        w.ShowDialog();
于 2012-12-29T11:18:35.770 回答