我正在使用Cinch MVVM框架,但我认为这与所有WPF方法有关。
我想要一个主屏幕 - Shell或MainWindow - 然后包含各种视图模型。要在视图模型之间导航,我正在使用(或将要使用)一个标签控件,其样式为按钮条,内容区域位于下方 - 这一切都可以,因为我将视图模型添加到tabcontrol(以及'Views'集合,这是在运行时绑定到选项卡控件。
一个不适合这种方法的屏幕是登录屏幕,我真的不想添加到标签控件 - 最好是它应该在它自己的用户控件中,占用整个屏幕而不是覆盖标志;也就是说,我希望它出现在同一个窗口而不是弹出对话框中,但我不确定如何动态添加/删除控件,然后在用户成功登录后添加后续tabcontrol(并删除登录)屏幕)。应该使用哪些容器?
TIA。
答案 0 :(得分:1)
最简单的方法是将tabcontrol放在没有列和行的网格中,以便默认填充网格。然后在网格中添加一个额外的网格或loginusercontrol,如下所示。用户需要登录的那一刻,您可以将MainTabControl的可见性设置为“折叠”,将LoginGrid设置为Visible,并在成功登录后将其切换回来。我希望下面的xaml对您有所帮助。
<Grid>
<TabControl x:Name="MainTabControl" Visiblity="Visible">
... put your tabs here ...
</TabControl>
<Grid x:Name="LoginGrid" Background="#60FFFFFF" Visibility="Collapsed">
... put your usercontrol to login here or the login controls themself
</Grid>
</Grid>
答案 1 :(得分:0)
您可以将ContentControl与绑定到视图模型的内容结合使用。因此,您有两个代表登录屏幕和主屏幕的视图模型,并使用DataTemplate显示适当的屏幕。
<Window.Resources>
...
<DataTemplate DataType="{x:Type my_view_models:SignInViewModel}">
<my_controls:SignInScreenView />
</DataTemplate>
...
</Window.Resources>
<ContentControl Content={Binding} />
答案 2 :(得分:0)
您可能对Lakana感兴趣,它是WPF的轻量级非侵入式导航框架。
Riana