我创建了一个单一的窗口应用程序,这个应用程序有两个屏幕,都显示在主窗口中。登录成功后登录屏幕然后是主应用程序屏幕。我目前通过使用导航窗口和页面来实现这一目标。
我不确定这是否是最佳方法,因为我不需要使用导航窗口提供的功能(向后和向前浏览等)。
我希望有人可以告诉我导航窗口是否是此设计的最佳方法,或者是否可以通过不使用页面和导航窗口来实现类似的外观。
感谢您的帮助。
埃姆林
答案 0 :(得分:0)
有许多不同的方法。一种相当简单的方法是从可视树中删除一些控件,然后将另一个控件添加到其中。除此之外,我已经看到许多使用Page / Frame的应用程序,它运行正常。
答案 1 :(得分:0)
没有什么可以阻止你实现这两个Windows。从第一个窗口成功登录完成后,可以显示主窗口,并且可以关闭第一个登录窗口。
您可能需要注意的一件事是,在第一个窗口关闭后但在显示第二个窗口之前,应用程序不会退出。如果需要,您可以在app.xaml中设置Application ShutdownMode属性。
答案 2 :(得分:0)
如果您愿意,可以使用Pages和navwindow。这仍然可以包含MVVM模式,因为如果需要,可以将视图加载为页面。
要启动项目,请创建一个窗口xaml文档,并将Window标记更改为导航窗口标记
<NavigationWindow x:Class="myapp.NavigationWindow"
xmlns:....
Title:"My App"
Source="newpage.xaml" <!--designates the page to load -->
ShowsNavigationUI="False" <!--designates if the navbar is displayed at top-->
</NavigationWindow>
然后在每个页面中,您可以使用NavigationService控制导航或加载新页面
NavigationService.Navigate(newUri("mynewpage.xaml", UriKind.Relative));
如果您在页面导航中记录的任何值都没有,您可以在需要时在代码中禁用它。
PS- 如果您正在寻找MDI WPF / win-32并不真正支持像Delphi这样的MDI(多文档界面),那么当您需要创建MDI外观时,您可以使用TabView控件或更多地依赖于提供的模式开发MVVM一种更优雅的方式来加载和传递不同的UI控件。