J'essaie de faire ma toute première application Silverlight, mais je n'arrive pas à faire fonctionner la fonction LogOn, pouvez-vous m'aider? Cela devrait être vraiment super simple pour vous tous, je vais vous montrer mes deux fichiers: LogOn.xaml.cs et LogOnViewModel.csProblème MVVM très très simple
Apparemment, le problème est que UserId n'est pas réglé assez tôt pour être disponible dans LogOn.xaml .cx quand j'ai besoin, pouvez-vous me aider à le faire fonctionner, qui lèverait mon moment un peu :-)
public partial class LogOn : PhoneApplicationPage
{
public LogOn()
{
InitializeComponent();
this.DataContext = LogOnViewModel.Instance;
}
private void btnLogOn_Click(object sender, RoutedEventArgs e)
{
if ((!string.IsNullOrEmpty(txtEmailAddress.Text)) && (!string.IsNullOrEmpty(txtPassword.Password)))
{
txbLogonMessage.Text = "";
LogOnViewModel.Instance.UserLogin(txtEmailAddress.Text, txtPassword.Password);
if (LogOnViewModel.Instance.UserId > 0)
NavigationService.Navigate(new Uri("/_2HandApp;component/Views/Main.xaml", UriKind.Relative));
else
txbLogonMessage.Text = "Login was unsuccessful. The user name or password provided is incorrect. Please correct the errors and try again. ";
}
}
}
public sealed class LogOnViewModel : INotifyPropertyChanged
{
public static LogOnViewModel Instance = new LogOnViewModel();
//public static int userId;
private SHAServiceClient WS;
private int userId;
public int UserId
{
get
{
return userId;
}
set
{
userId = value;
this.RaisePropertyChanged("UserId");
}
}
private LogOnViewModel()
{
WS = new SHAServiceClient();
WS.UserLoginCompleted += new EventHandler<UserLoginCompletedEventArgs>(WS_UserLoginCompleted);
}
void WS_UserLoginCompleted(object sender, UserLoginCompletedEventArgs e)
{
if (e.Error == null)
{
this.UserId = e.Result;
}
}
public void UserLogin(string email, string password)
{
WS.UserLoginAsync(email, password);
}
/* Implementing the INotifyPropertyChanged interface. */
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if ((propertyChanged != null))
{
propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
Salut Abdou Moumen, merci beaucoup pour tout votre travail, je vais juste besoin de le regarder un jour pour voir si je peux le faire fonctionner.J'étais vraiment perdu et déprimé, mais peut-être qu'après avoir regardé votre code et obtenu MVVMLight je peux le faire fonctionner, je l'espère, je serai de retour plus tard. – rune007
@ rune007 silverlight est une excellente technologie et MVVM est un modèle très intéressant, alors continuez et bonne chance;) – AbdouMoumen
Encore une fois merci pour votre réponse élaborée M. Abdou Moumen, votre message est utile que j'apprends à propos de MVVM et MVVMLight: -) – rune007