2014-03-04 121 views
1

如何動態地(在代碼後面)選擇Windows Phone Toolkit的LongListMultiSelector中的少數項目。屬性SelectedItems沒有setter。Windows phone 8 LongListMultiSelector動態選擇項目

我的代碼:

private async void GetGenres() 
    { 
     var genres = await App.MusClient.GetGenresAsync(); 

     var preferencedGenresIdsList = App.GetFromIsoStorage<List<string>>(App.GENRES_IDS_KEY_STRING); 

     GenresListBox.ItemsSource = genres; 




     foreach (var item in GenresListBox.ItemsSource) 
     { 
      if (preferencedGenresIdsList.Contains(((Genre)item).Id)) 
      { 
       LongListMultiSelectorItem container = GenresListBox.ContainerFromItem(item) as LongListMultiSelectorItem; 
       if (container != null) 
       { 
        container.IsSelected = true; 
       } 
      } 
     } 




     if (genres.Result == null || genres.Count == 0) 
     { 
      MessageBox.Show("No results available"); 
     } 

    } 

回答

1

我找到了解決方案

private async void GetGenres() 
    { 
     var genres = await App.MusClient.GetGenresAsync(); 

     var preferencedGenresIdsList = App.GetFromIsoStorage<List<string>>(App.GENRES_IDS_KEY_STRING); 

     GenresListBox.ItemsSource = genres; 




     foreach (var item in GenresListBox.ItemsSource) 
     { 
      if (preferencedGenresIdsList.Contains(((Genre)item).Id)) 
      { 
       GenresListBox.ScrollTo(item); 
       LongListMultiSelectorItem container = GenresListBox.ContainerFromItem(item) as LongListMultiSelectorItem; 
       if (container != null) 
       { 
        container.IsSelected = true; 
       } 
      } 
     } 
     GenresListBox.ScrollTo(GenresListBox.ItemsSource[0]); 



     if (genres.Result == null || genres.Count == 0) 
     { 
      MessageBox.Show("No results available"); 
     } 

    } 

原因,沒有工作是因爲UI不會創建尚未項。 GenresListBox.ScrollTo(item); - 強制UI創建元素!