bonjour,
voilà j'ai fait une petite appli test en silverlight 3 avec mvvm light toolkit.
côté xaml, voici ce que j'ai:
j'ai donc un bouton bindé sur ma commande de sauvegarde d'un personne, et plusieurs champs de saisie num nom prénom mail fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <Button cmd:ButtonBaseExtensions.Command="{Binding AjouterPersonnel}" Content="Ajouter la personne" Height="25" HorizontalAlignment="Left" Margin="93,211,0,0" VerticalAlignment="Top" Width="166" /> <TextBox Text="{Binding PersonneSaisie.Num, Mode=TwoWay, UpdateSourceTrigger=Default}" x:Name="champsNum" Height="22" HorizontalAlignment="Left" Margin="93,43,0,0" VerticalAlignment="Top" Width="166"/> <TextBox Text="{Binding PersonneSaisie.Nom, Mode=TwoWay, UpdateSourceTrigger=Default}" x:Name="champsNom" Height="22" HorizontalAlignment="Left" Margin="93,74,0,0" VerticalAlignment="Top" Width="166"/> <TextBox Text="{Binding PersonneSaisie.Prenom, Mode=TwoWay, UpdateSourceTrigger=Default}" x:Name="champsPrenom" Height="22" HorizontalAlignment="Left" Margin="93,105,0,0" VerticalAlignment="Top" Width="166"/> <TextBox Text="{Binding PersonneSaisie.Mail, Mode=TwoWay, UpdateSourceTrigger=Default}" x:Name="champsMail" Height="22" HorizontalAlignment="Left" Margin="93,136,0,0" VerticalAlignment="Top" Width="166"/> <TextBox Text="{Binding PersonneSaisie.Fonction, Mode=TwoWay, UpdateSourceTrigger=Default}" x:Name="champsFonction" Height="22" HorizontalAlignment="Left" Margin="93,167,0,0" VerticalAlignment="Top" Width="166"/>
côté view model, voici ce que j'ai:
j'ai mon objet de type "personnel" qui est instancié dans le constructeur de mon viewModel.. jusque là pas de pb.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #region PersonneAjoutee property public const string PersonneAjouteeName = "PersonneSaisie"; private Personnel _personneSaisie = null; public Personnel PersonneSaisie { get { return this._personneSaisie; } private set { if (this._personneSaisie == value) { return; } this._personneSaisie = value; RaisePropertyChanged(PersonneAjouteeName); } } #endregion
pour ma commande voici le code:
les méthodes "AjouterPersonnelAsync" et "ExecuterRafraichissement" sont ok et testées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #region SaveCommand private void CommandeAjouterPersonnel() { AjouterPersonnel = new RelayCommand(ExecuteSaveCommand,CanExecuteSaveCommand); } public ICommand AjouterPersonnel { get; internal set; } public void ExecuteSaveCommand() { srvPersonnelClient.ajouterPersonnelAsync(PersonneSaisie.Num, PersonneSaisie.Nom, PersonneSaisie.Prenom, PersonneSaisie.Mail, PersonneSaisie.Fonction); } void srvPersonnelClient_ajouterPersonnelCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) { ExecuterRafraichissement(); } public bool CanExecuteSaveCommand() { if (this.PersonneSaisie == null || string.IsNullOrEmpty(this.PersonneSaisie.Num.ToString()) || string.IsNullOrEmpty(this.PersonneSaisie.Nom) || string.IsNullOrEmpty(this.PersonneSaisie.Prenom)) return false; return true; } #endregion
mon soucis est que quand je lance mon appli, mon bouton d'enregistrement est grisé, normal vu que les champs num, nom et prénom ne sont pas encore renseignés et qu'il sont la condition de mon CanExecuteSaveCommand.
quand j'ai saisie le num, nom et prénom de la personne le champs ne se dégrise pas, comme si il ne savait pas en temps réel les changements effectués sur mes champs.
comment faire cette manip ?
Partager