Window UWP最佳实践,用于在应用启动时显示所需内容

时间:2016-01-18 18:07:13

标签: c# login uwp

我目前正在教自己如何构建Windows UWP应用程序。

我的问题是:
如果我有一个需要登录的应用程序,如果应该显示登录表单,我该如何处理该决定,如果PasswordVault已经存储了凭证,我该如何处理应用程序的实际起始页面?

我是否将MainPage留空并只编写逻辑(在.cs文件中),该逻辑决定我是导航到LoginPage还是ContentPage(或我将称之为的任何内容)? 或者是否打算将此逻辑放入App.xaml.cs?

或者我的方法是完全错误的,这应该以完全不同的方式处理?

3 个答案:

答案 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)