2009-08-14 5 views
1

J'ai un objet qui implémente l'interface IEditableObject exposée sur un modèle viewmodel lié à une page Silverlight.Utilisation de IEditableObject dans Silverlight

Comment/Comment appeler les méthodes BeginEdit, CancelEdit et EndEdit? Comment puis-je limiter uniquement les objets implémentant cette interface à ma page? Je n'utilise pas les contrôles DataGrid ou DataForm. J'utilise les contrôles Label, TextBox et DescriptionViewer pour afficher les données pour l'édition.

Répondre

6

Je sais c'est un vieux fil (mais à cause de l'utilisation future ...)

je le fais de cette façon:

chaque fois que l'élément en cours (par exemple d'un CollectionViewSource) change cette est fait:

void View_CurrentChanged(object sender, EventArgs e) 
     { 
      if (culturesView.Source != null) 
      { 
       ((IEditableObject)SelectedRecord).BeginEdit(); 
       RaisePropertyChanged("SelectedRecord"); 

      } 
     } 

Chaque fois que je veux sauver (l'élément en cours) je fais ceci:

private void Save() 
{ 
((IEditableObject)SelectedRecord).EndEdit(); 
//do the actual saving to the dbms here .... 

} 

Chaque fois que je veux annuler (modifications en cours) je fais ceci:

private void Cancel() 
{    
((IEditableObject)SelectedRecord).CancelEdit(); 
      //allthough we have canceled the editing we have to re-enable the edit mode (because 
      //the user may want to edit the selected record again) 
      ((IEditableObject)SelectedRecord).BeginEdit(); 

} 

aide quelqu'un espère que cela à l'avenir!

+0

Bien que ce ne soit pas une réponse exacte à certaines de mes questions, l'exemple de code donné (et le temps qui s'est écoulé depuis que j'ai posté cette question) m'ont donné quelques idées. Merci! – DaveB

Questions connexes