2010-08-25 5 views
0

J'ai une application Silverlight qui affiche une carte, et mon intention est, lorsque je souris sur un emplacement spécifique dans la carte, les informations sur cet emplacement s'affiche en quelque sorte dans l'application. Ce que j'ai fait jusqu'ici est de lier l'application Silverlight à un service web qui récupère cette information pour moi, mais maintenant je suis coincé, et je ne sais pas comment procéder. Je suivais this tutorial., mais quand le tutoriel veut récupérer une liste, je veux récupérer un seul objet. J'essayais d'utiliser la grille de données, mais je pense que ce n'était pas conçu pour faire ce que je voulais. J'ai besoin d'un éclairage pour me dire comment procéder. Eh bien ... Je vais éditer le code pour montrer le problème que je rencontre. Mon code ont derrière ces deux méthodes:Comment afficher une information WCF dans Silverlight?

private void MouseOverHarbor(object sender, RoutedEventArgs e) 
     { 
      Ellipse thisPath = (Ellipse)sender; 

      thisPath.Stroke = mySolidColorBrush; 
      DataRetrieverReference.Service1Client webService = new DataRetrieverReference.Service1Client(); 
      webService.GetDataCompleted += new EventHandler<DataRetrieverReference.GetDataCompletedEventArgs>(webService_GetDataCompleted); 

      webService.GetDataAsync((int)thisPath.DataContext);  

     } 

     void webService_GetDataCompleted(object sender, DataRetrieverReference.GetDataCompletedEventArgs e) 
     { 
      NameField.Text = "Works";//No, it doesnt!    
     } 

Ce que je peux voir est que le gestionnaire d'événements est jamais atteint, mais je ne sais pas pourquoi. J'ai juste utilisé le même code que les tutoriels enseignés, mais je n'ai pas encore atteint mon objectif. Est-ce que je manque quelque chose?

+0

Je suis un peu confus. Le corps de votre question fait référence à l'obtention de données à partir d'un service Web et à leur affichage dans une grille, mais le titre de votre question fait référence à l'affichage d'une "information de base de données". Si vous avez seulement besoin de savoir comment communiquer avec le service Web, l'aspect base de données de cette question n'est pas pertinent. Pourriez-vous donner plus d'informations sur le type de données que vous essayez de récupérer et comment vous souhaitez présenter ces données à l'utilisateur? –

+0

J'ai changé le nom maintenant. –

Répondre

0

Supprimez la partie List< > de List<Customer> lors de vos appels et conservez uniquement la pièce Customer.

Changer vos requêtes de

var matchingCustomers = from cust in db.Customers 
         where cust.LastName.StartsWith(lastName) 
         select cust; 
return matchingCustomers.ToList(); 

à

var matchingCustomers = from cust in db.Customers 
         where cust.LastName.StartsWith(lastName) 
         select cust; 
return matchingCustomers.FirstOrDefault(); 
+0

Le problème est que la grille de données Silverlight ne me permet pas d'utiliser une valeur non énumérable dans le champ ItemsSource. –

+0

@Bruno: Pourquoi utiliser une grille pour afficher une seule valeur? Un autre contrôle pourrait être plus approprié. Si vous voulez convertir une seule valeur en liste, vous pouvez faire: Liste customerList = new Liste {singleCustomer}; –