我目前正在教自己如何构建Windows UWP应用程序。
我的问题是:
如果我有一个需要登录的应用程序,如果应该显示登录表单,我该如何处理该决定,如果PasswordVault
已经存储了凭证,我该如何处理应用程序的实际起始页面?
我是否将MainPage留空并只编写逻辑(在.cs文件中),该逻辑决定我是导航到LoginPage还是ContentPage(或我将称之为的任何内容)?
或者是否打算将此逻辑放入App.xaml.cs?
或者我的方法是完全错误的,这应该以完全不同的方式处理?
答案 0 :(得分:1)
如果要基于ViewModel显示隐藏内容,可以向ViewModel添加一个属性,如IsLoggedIn
private bool isLoggedIn;
public bool IsLoggedIn
{
get { return isLoggedIn; }
set
{
isLoggedIn = value;
OnPropertyChanged("IsLoggedIn");
}
}
然后,您可以从nuget
安装WindowsStateTriggers安装完成后,在xaml
页面顶部添加引用
xmlns:triggers="using:WindowsStateTriggers"
接下来使用VisualStateManager
,您只需根据viewmodel上的IsLoggedIn
属性显示/隐藏内容即可。在这里,我们定位网格的Visibility
属性
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="LoginGroup">
<VisualState x:Name="LoggedIn">
<VisualState.StateTriggers>
<triggers:EqualsStateTrigger EqualTo="True" Value="{Binding Path=IsLoggedIn}" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="LoggedInGrid.Visibility" Value="Visible"/>
<Setter Target="LoggedOutGrid.Visibility" Value="Collapsed" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="LoggedOut">
<VisualState.StateTriggers>
<triggers:EqualsStateTrigger EqualTo="False" Value="{Binding Path=IsLoggedIn}" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="LoggedInGrid.Visibility" Value="Collapsed"/>
<Setter Target="LoggedOutGrid.Visibility" Value="Visible" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid x:Name="LayoutRoot">
<Grid x:Name="LoggedInGrid">
</Grid>
<Grid x:Name="LoggedOutGrid">
</Grid>
</Grid>
</Grid>nter code here
答案 1 :(得分:0)
您可以在加载应用程序时检查凭据是否已存储/有效,并决定是否从App.xaml.cs中的OnLaunched事件导航到主应用程序页面或登录页面
答案 2 :(得分:0)
您可以从sdk中查看扩展的splashscreen示例:https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/SplashScreen