首页 > 解决方案 > WPF 中的非模态窗口

问题描述

在我的 WPF 应用程序中,需要显示一个非模式窗口。我正在使用 MVVM Light 框架。人们建议使用不同的库来这样做,但是是否有任何合适的控件可以使用 MVVM Light 或使用 WPF 本机库来做到这一点?

需要将该非模态窗口始终保持在最前面。

谢谢。

标签: c#wpfmvvm-lightnon-modal

解决方案


要创建非模态窗口,您不必使用框架。WPF 库有足够的可能性来创建它。

最快的解决方案是创建一个新的Xaml Window并在 Xaml Window 代码的属性内指定TopMost优先级,并将其设置为 true。

<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="NonModalWindow" Height="300" Width="300" TopMost="True">
    <Grid>
        <!---- Some element defined in your window ---->
    </Grid>
</Window>

创建此窗口后,只需调用它即可。

new NonModalWindow().Show();

如果你确实想把它变成一个Modal window你可以使用下面的代码。

new NonModalWindow().ShowDialog(); // wooah a contradiction in the code


推荐阅读