2011-07-12 103 views
3

我需要從包含我班級對象的列表框中選擇一個項目。這裏是我的代碼:在Windows Phone 7中更改列表框的選定項目

加載事件:

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     XDocument loadedData = XDocument.Load("file.xml"); 
     var data = from query in loadedData.Descendants("element") 
       select new myClass 
       { 
        First = (string)query.Element("first"), 
        Second = (string) query.Element("second") 
       }; 
     List<myClass> d = data.ToList<myClass>(); 
     myList = d; 
     myListBox.ItemsSource = data;    
    } 

,然後我的按鈕,應該改變所選項目:

private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     myListBox.SelectedItem = myList[100]; 
    } 

我錯了在這裏做什麼?

回答

1

myList不是您綁定到列表的集合。
要麼使d更寬範圍的變量,並且是指在button1_click

商店datamyList而不是它的一個副本。

0

爲了提高效率,我將ItemsSource設置爲'd'而不是'data'。 linq查詢返回的枚舉是懶惰的,所以每次UI更新時都會對其進行評估。您擁有的數組已被急切地創建,所以後來的查找速度很快。

0

這裏看起來像一個小錯誤。我能夠不確定地複製出類似的問題。

我對Databound應用程序使用了標準VS模板。該模板附帶一些示例數據和一個填充列表框。我添加了一個按鈕,將所選項目設置爲集合中的第15個項目。這按預期工作。但是,當我將列表滾動到頂部時,單擊按鈕時它不會返回到第15條記錄。在這裏猜測,你遇到的是另一個同樣問題的症狀。

爲了解決這個問題,我首先將SelectedIndex設置爲-1,它基本上取消選擇該項目。

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    myListBox.SelectedIndex = -1; 
    myListBox.SelectedItem = myList[100]; 
} 

我很好奇這是否也解決了您的問題。

相關問題