2010-01-12 4 views
0

Je tente de plier le DataForm pour prendre en charge les listes plusieurs-à-plusieurs et lier des objets enfants. Je suis allé jusqu'à pouvoir contrôler l'affichage des objets et avoir accès à l'événement on change.Silverlight, DataForm, AutoGeneratingField, les services RIA et les entités enfants

Par exemple:

OfferEditorForm.AutoGeneratingField += new EventHandler<DataFormAutoGeneratingFieldEventArgs>(OfferEditorFormGeneratingField); 

Et voici mon petit override:

if (e.PropertyName == "Client") 
     { 
      var stack = new StackPanel(); 
      var dataField = new DataField { Content = stack, Label = "Client:" }; 
      var binding = new Binding("CustomerClients") { Source = _viewModel }; 
      var combo = new ComboBox 
      { 
       DisplayMemberPath = "Name", 
       Name = "OfferEditForm_Client", 
       SelectedItem = _viewModel.CustomerLoyaltyProgramOffer.Client 
      }; 

      combo.SetBinding(ComboBox.ItemsSourceProperty, binding); 
      combo.SelectionChanged += new SelectionChangedEventHandler(CustomerClients_SelectionChanged); 
      stack.Children.Add(combo); 
      dataField.Content.UpdateLayout(); 
      e.Field = dataField; 
     } 

Je suis preneuse l'événement SelectedChanged, et mettre à jour l'élément, dans mon modèle de vue, qui est défini comme l'élément actuel pour le formulaire en tant que tel:

void CustomerClients_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     FrameworkElement frameworkElement = sender as FrameworkElement; 
     ComboBox comboBox = (ComboBox)frameworkElement.FindName("OfferEditForm_Client"); 
     if (comboBox != null) 
     { 
      _viewModel.CustomerLoyaltyProgramOffer.Client = (CustomerClient)comboBox.SelectedItem; 
      _viewModel.CustomerLoyaltyProgramOffer.CouponImage = "OMG!"; 
     } 
    } 

Lorsque je soumets les modifications, dans cet exemple, Coup onImage est envoyé à la méthode Update dans mon service de domaine, mais le client est toujours NULL. CustomerLoyaltyProgramOffer ne semble pas déclencher une modification de propriété notify.

Ceci est-ce un problème d'objet enfant? Est-ce que je vais à ce sujet tout faux? Avez-vous besoin de créer un modèle d'édition entier?

Répondre

Questions connexes