美文网首页
【WPF】关于WPF的弹出窗口

【WPF】关于WPF的弹出窗口

作者: UnicornChen | 来源:发表于2019-05-17 14:15 被阅读0次

    几个重要的概念需要清楚:

    Show和ShowDialog区别

    1、调用Show方法后弹出子窗口后,线程会继续往下执行。调用ShowDialog方法弹出子窗口后,线程会阻塞,直到子窗口关闭才继续往下执行。

    2、ShowDialog弹出的子窗口会使父窗口不能获得焦点,必须先关闭子窗口才能关闭父窗口。Show则不会。

    3、在ShowDialog弹出的子窗口中设置DialogResult会关闭子窗口,父窗口可根据DialogResult的值做不同响应。

    Owner

     当设置了Owner,不管是点击任务栏切换还是TAB切换,子窗口都将永远保持在父窗口上层(最符合使用习惯)。

    如果不设置子窗口的Owner,就可能发生子窗口被父窗口遮挡,并且父窗口无法点击的严重BUG,所以弹出窗口时应该要首先设置子窗口的Owner属性。

    PS:不能将所有的窗口Owner都设置为App.Current.MainWindow,因为如果是第三级弹出子窗口,那么点击第二级子窗口时,第三级子窗口也会被遮挡。

    Topmost

    当Topmost=true时,窗口会置于桌面的最顶层,本软件的所有的窗口或其它软件的窗口都会被该窗口遮挡(这显然是不合理的)。

    所以,如果不是特殊需要,千万不要把Topmost设置为true。

    ShowInTaskbar

    默认为true,当设置为false的时候在任务栏看不到该窗口。

    总结

    因为WPF默认只有一个不带参的ShowDialog方法,为了防止弹出子窗口时忘记设置Owner属性,我们可以添加一个带参数的扩展方法。

    扩展方法:

    相关文章

      网友评论

          本文标题:【WPF】关于WPF的弹出窗口

          本文链接:https://www.haomeiwen.com/subject/jrtoaqtx.html