2011-04-30 16 views
0

我已經將LINQ to XML模型放在了一起,後面跟着ScottGu's Tutorial,它返回一個RSS提要,然後我可以使用foreach循環從數據中提取數據相同的.cs文件。傳遞一個類別中的項目以用於另一種形式

然後我把它放到它自己的類中,就像從代碼中調用一樣,但是我無法從我的其他頁面訪問「條目」來執行ForEach循環。我對此很新,想知道我需要寫些什麼?

繼承人我的rss閱讀器(從scotts鬆散建造)在其自己的.cs文件。我可以訪問DataAnswerFeed,但不能訪問「var items」。我需要一種方法來返回值嗎?

public class DataAnswerFeed 
    { 
     public string AnsID { get; set; } 
     public string AnsQueID { get; set; } 
     public string AnsText { get; set; } 
     public string Correct { get; set; } 
    } 
public class AnswerFeed 
{ 

    public AnswerFeed() 
    { 
     WebClient feed = new WebClient(); 
     feed.DownloadStringCompleted += new DownloadStringCompletedEventHandler(feed_DownloadStringCompleted); 
     feed.DownloadStringAsync(new Uri("http://myRssFeed.xml")); 
    } 

    private static readonly XNamespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"; 

    public void feed_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 
     XElement uri = XElement.Parse(e.Result); 
     var items = (from item in uri.Descendants(m + "properties") 
        select new DataAnswerFeed() 
        { 
         AnsID = item.Descendants().ToList()[0].Value, 
         AnsQueID = item.Descendants().ToList()[1].Value, 
         AnsText = item.Descendants().ToList()[2].Value, 
         Correct = item.Descendants().ToList()[3].Value 
        }).ToList(); 

    } 
} 

}

在我的其他網頁我寫DataAnswerFeed資訊供稿=新DataAnswerFeed(); 然後我試圖運行ForEach循環的方式與我在類中的方式相同,但得到一個錯誤,指出「GetEnumerator」沒有公共定義?

宣佈newFeed後,我的foreach在一個單獨的虛空。

public void testPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     // ForEach loop on the list 
     foreach (DataAnswerFeed a in newFeed) 
     { 
      //Show test data to check working 
      MessageBox.Show(a.AnsText); 
     } 

    } 

謝謝...

+0

這是什麼類型?這是一個錯字,你的意思是'這個'而不是? – thumbmunkeys 2011-04-30 16:48:59

+0

對不起,這只是一般符號,因爲我宣佈newFeed ...這應該閱讀newFeed – beat145 2011-04-30 17:18:38

+0

恐怕你目前的做法不會工作,因爲你異步檢索飼料,即使你公開列表建議下面。 Silverlight的方式是更新一個模型屬性,然後由某個UI元素使用 - 你不應該直接在接收到的數據上直接循環。 – BrokenGlass 2011-04-30 17:35:41

回答

0

添加到您的AnswerFeed

public static List<DataAnswerFeed> Answers = new List<DataAnswerFeed>(); 

然後將查詢結果分配給它

Answers = (from item in uri.Descendants(m + "properties") ... 

testPage_Loaded

foreach (DataAnswerFeed a in AnswerFeed.Answers) 

這不是很好有靜力學,但它會工作;)

+0

謝謝。這通過了價值,所以我可以看到它,但它給了我作爲一個列表與計數0項目,所以沒有數據傳遞。 正在使用ToList();在我的選擇查詢的結尾足以將它傳遞給Answers? – beat145 2011-04-30 17:27:59

+0

是的,它應該是,你確定feed_DownloadStringCompleted被執行,然後你顯示答案? – thumbmunkeys 2011-04-30 17:35:34

+0

我的代碼與上面的一樣,並提供了您的修改。它在我有了下面的forEach時起作用,所以也許是因爲我的其他頁面? 我使用 「的foreach(在AnswerFeed.Answers DataAnswerFeed一) {// 顯示測試數據,以檢查工作 MessageBox.Show(a.AnsText);} 」 ,我應該宣佈什麼班什麼?這可能是 – beat145 2011-04-30 17:43:53

相關問題