gpt4 book ai didi

data-binding - 我可以绑定(bind)到 Xamarin Forms 中的全局内容吗?

转载 作者:行者123 更新时间:2023-12-05 02:13:09 25 4
gpt4 key购买 nike

我想在自定义 View 中显示当前用户,我的大部分 ContentPage 都包含该 View 。登录后,我目前将当前用户作为属性存储在 App 实例中。在生命周期中尝试仅更新构造函数中的 Label 还为时过早。

Xamarin Forms 是否有办法绑定(bind)到这个对象或以其他方式让当前用户更新我的自定义 View 中的标签?我正在使用 Xamarin.Forms 3.5 和标准 MVVM。

最佳答案

您可以采用多种方法,但简短的回答是您需要在全局(静态)变量和 View 之间放置一些东西,以使事情顺利进行。 View 模型上的属性必须是非静态属性。

但是它可以有一个自定义实现,以便 getter 从某个全局位置检索值,在您的情况下,您可能不需要 setter。您唯一需要的另一部分是告诉 View 模型在用户信息可用时触发 PropertyChanged 事件,然后您可以使用从标签到 View 模型的标准绑定(bind)。

假设您有一些 CurrentUser 静态类,其成员如下:

public static class CurrentUser
{
public event Action OnLogin; // login code needs to fire this on login
public string Username { get; set; }
// etc.
}

然后 View 模型会通过做类似的事情来连接到它:

class UserViewModel : INotifyPropertyChanged
{

public UserViewModel()
{
CurrentUser.OnLogin += CurrentUser_Login;
}

private void CurrentUser_Login()
{
PropertyChanged?.Invoke(nameof(Username));
}

public string Username {
get {
return CurrentUser.Username;
}
}

// etc.
}

然后 View 将使用 <Label Text="{Binding Username}" . . .>然后当 OnLogin 被触发时,所有 View 将自动更新为新用户名。

关于data-binding - 我可以绑定(bind)到 Xamarin Forms 中的全局内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55110544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com