如何使用MVVM Light Windows Phone 7刷新我的应用程序中访问的页面的数据
本文关键字:访问 应用程序 数据 我的 刷新 MVVM 何使用 Light Windows Phone | 更新日期: 2023-09-27 18:26:43
我在使用MVVM Light的Windows Phone 7上有几个应用程序页面,当我登录应用程序命令以调用必要的服务并将我返回到登录页面时,就在那里用数据(用户名和密码)启动会话,当我进入时,在数据之前绑定的用户后面的页面中,并且不更新新数据,我有绑定属性和raisePropertyChanged。如何再次初始化数据并再次填充。
谢谢。
这是我在ViewModel:中的代码示例
public class LoginViewModel:ViewModelBase
{
ILoginService _loginService;
INavigationService _navigationService;
private string _usuario;
public string Usuario
{
get { return _usuario; }
set { if (_usuario != value) { _usuario = value; RaisePropertyChanged("Usuario"); } }
}
private string _contraseña;
public string Contraseña
{
get { return _contraseña; }
set { if (_contraseña != value) { _contraseña = value; RaisePropertyChanged("Contraseña"); } }
}
public LoginViewModel(ILoginService loginService, INavigationService navigationService)
{
//my code....
}
}
以及我的视图中的代码XAML:
<TextBlock Grid.Row="1" Text="Usuario" Style="{StaticResource TextosEtiquetasLogin}"/>
<TextBox Grid.Row="2" Text="{Binding Usuario, Mode=TwoWay}" Style="{StaticResource CuadrosTexto}" />
<TextBlock Grid.Row="3" Text="Contraseña" Style="{StaticResource TextosEtiquetasLogin}"/>
<PasswordBox x:Name="txtPass" Grid.Row="4" Password="{Binding Contraseña, Mode=TwoWay}" Style="{StaticResource CuadrosTextoPass}">
谢谢,我希望你能帮助我…
如果您使用的是SimpleIoc,那么它默认情况下会将所有已解析的类视为singleton,包括您的视图模型。
实际情况是,当您更改用户时,SimpleIOC不会在新用户转到页面时为其解析新的视图模型,而是重新使用包含前一用户数据的视图模型。
您有两个选项:
1) 解析视图模型,以便每次解析时都能获得视图模型的新实例:
SimpleIoc.Default.GetInstance<MyViewModel>(Guid.NewGuid().ToString());
2) 当您更改用户时,让Messenger广播您的视图模型接收到的"NewUser"事件,以便他们可以根据新用户详细信息重新加载数据:
在LoginViewModel中:
private void LoginSuccessful()
{
Messenger.Default.Send<NewUserNotification>(new NewUserNotification("new user name"));
}
在其他视图模型中:
public class MyViewModel:ViewModelBase
{
public MyViewModel()
{
Messenger.Default.Register<NewUserNotification>(ReceiveAction);
}
private void ReceiveAction(NewUserNotification user)
{
ReloadMyData(user);
}
}