2010-08-25 100 views
0

我有一個顯示地圖的Silverlight應用程序,我的意圖是,當我將鼠標懸停在地圖上的特定位置時,關於此位置的信息以某種方式顯示在應用程序中。到目前爲止我所做的是將silverlight應用程序鏈接到一個爲我檢索這些信息的web服務,但現在我被卡住了,不知道如何繼續。我正在關注this tutorial.,但是當本教程想要檢索列表時,我想檢索一個對象。我試圖使用數據網格,但我認爲它不是爲了執行我想要的。我需要一些啓發來告訴我如何繼續。如何在Silverlight中顯示WCF信息?

嗯......我將編輯代碼以顯示我遇到的問題。我的代碼背後有這樣兩種方法:

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!    
     } 

我能看到的是,事件處理程序永遠達不到,但我不知道爲什麼。我只是使用了教程中的相同代碼,但是我還沒有實現我的目標。我錯過了什麼嗎?

+0

我有點困惑。問題的主體是指從Web服務獲取數據並將其顯示在網格中,但問題的標題是指顯示「數據庫信息」。如果您只需要知道如何與Web服務進行通信,則此問題的數據庫方面是無關緊要的。您能否提供更多關於您想要檢索的數據類型以及您希望如何向用戶展示這些數據的信息? – 2010-08-25 20:44:19

+0

我現在改了名字。 – 2010-08-26 17:17:04

回答

0

從您的通話中刪除List< >部分List<Customer>並保留Customer部分。

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

問題是,Silverlight數據網格不會允許我在ItemsSource字段中使用不可枚舉的值。 – 2010-08-26 03:40:50

+0

@布魯諾:你爲什麼要用網格來顯示單個值?另一種控制可能更合適。如果您想將單個值轉換爲List,您可以執行以下操作:列表 customerList = new List {singleCustomer}; – 2010-08-26 07:27:34