gpt4 book ai didi

C# 使用 Template10 在汉堡菜单中显示用户名

转载 作者:行者123 更新时间:2023-11-30 23:31:48 24 4
gpt4 key购买 nike

我正在开发 Windows 10 UWP 应用程序,我使用的是 Template10 library 中的空白模板.我能够毫无问题地使用汉堡包菜单。该应用程序要求用户先登录,然后进入应用程序的“主页”。我想在用户登录后在汉堡菜单底部显示用户的用户 ID 作为辅助按钮,或者在他们未登录(或注销)时显示登录选项。

这是应该显示用户 ID 的辅助按钮的 XAML:

<controls:HamburgerButtonInfo>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<SymbolIcon Symbol="Contact" Width="48" Height="48" />
<TextBlock Name="Username" Margin="12, 0, 0, 0" VerticalAlignment="Center"/>
</StackPanel>
</controls:HamburgerButtonInfo>

代码隐藏只是默认构造函数,用于启用汉堡菜单外壳并添加代码以显示用户名。

public Shell(NavigationService navigationService)
{
this.InitializeComponent();
Menu.NavigationService = navigationService;
if(user logged in)
{
Username.Text = Username;
}
else
{
Username.Text = "login";
}
}

该代码部分起作用,因为即使在用户登录后它也会显示“登录”。用户名仅在应用挂起/恢复或退出/重新启动时显示。我如何确保在用户登录后,汉堡包菜单外壳中的辅助按钮得到更新,而无需重新启动/恢复应用程序?

最佳答案

由于您使用的是 Template10,我建议您看一下模型 View View 模型模式 (Channel9 introductive video) .

使用此模式,您可以删除部分后面的代码,并且从 XAML 级别,您可以执行以下操作:

<TextBlock Name="Username" Text="{Binding UserDataContext.LoginString}" Margin="12, 0, 0, 0" VerticalAlignment="Center"/>

UserDataContext 是对公开一些属性的 ViewModel 类的引用,例如 LoginString,可以是这样的:

public string LoginString
{
get
{
return _loginString;
}

set
{
if (_loginString == value)
{
return;
}

_loginString = value;
RaisePropertyChanged(() => LoginString);
}
}

每次从您的代码中更改 _loginString 的值其属性,您的 TextBlock 将被通知并且其Text 将被更新。这样,您不必更改 Shell 构造函数中的 HamburgerButtonInfo 文本,而是更改 UserDataContext 中的任何位置。

请注意 RaisePropertyChanged 来自 MVVM Light Toolkit .

关于C# 使用 Template10 在汉堡菜单中显示用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34475089/

24 4 0