2014-09-27 3 views
0

У меня есть ниже класс ArtistAlbum:Получить индекс LongListSelector SelectedItem с Jumplist и DataSource как List <AlphaKeyGroup <Artist>> где художник пользовательский класс

public class Artist 
{ 
    public string ArtistName { get; set; } 
} 

Это LonglistSelector принадлежит MusicPage.xaml и после получения индекса из LongListSelector.SelectedItem, я хотел бы получить детали коллекции Artist по указанному выше индексу на другой странице и, следовательно, использовать GlobalVars. Но я не могу получить индекс LongListSelector.

private void llsArtists_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    // Getting the index here from llsArtists.ItemsSource by using IndexOf 
    // doesn't work and returns -1 
    // Get the ID here and save it to GlobalVars._artistID; 
    NavigationService.Navigate(new Uri("/ArtistDetail.xaml", UriKind.Relative)); 
} 

Метод ниже отвечает за получение результатов в коллекции.

void GetArtists() 
    { 

     this.Dispatcher.BeginInvoke(() => 
     { 

      for (int i = 0; i < ml.Artists.Count; i++) 
      { 
       sourceArtists.Add(new Artist 
       { 
        ArtistName = ml.Artists[i].Name.ToUpper(), 
       }); 


       List<AlphaKeyGroup<Artist>> DataSource = AlphaKeyGroup<Artist>.CreateGroups(sourceArtists, 
         System.Threading.Thread.CurrentThread.CurrentUICulture, 
         (Artist s) => { return s.ArtistName; }, true); 

        llsArtists.ItemsSource = DataSource; 

      } 


     }); 
    } 

Пожалуйста, смотрите изображение ниже структуры ItemSource Nested List

+0

Вы пытались ответить на мой предыдущий вопрос, только с приведением к 'Художнику' вместо этого? –

+0

Hi Yuval, Да, я сделал - он все еще возвращает индекс -1, а тип - это 'Artist', который он должен быть. – 2014-09-27 11:10:00

+0

Следует также отметить, что ItemsSource является «AlphaKeyGroup» (используется JumpList), и поэтому он также содержит заголовки групп для пустого JumpList. Кроме того, извинения, если это может быть не лучшим способом, но это также как вложенный список (см. Мое изображение в вопросе). Поэтому я подозреваю, что мне, возможно, придется использовать 1IndexOf (что-то.IndexOf (x)) '?? Может быть ? – 2014-09-27 11:15:42

ответ

0

Это решило мой вопрос:

Как мой ItemsSource был первоначально Artist но затем превращали в List<AlphaKeyGroup<Artist>>, я тогда выбрал мой List<AlphaKeyGroup<Artist>> в качестве источника товаров для получения .IndexOf по следующему адресу:

  1. я первый получил атрибут e.AddedItems Model.Name, используя эту пустоту

    private void llsArtists_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
        // Getting the index here from llsArtists.ItemsSource by using IndexOf 
        // doesn't work and returns -1 
        // Get the ID here and save it to GlobalVars._artistID; 
        var artist = (Artist)e.AddedItems[0]; 
        GetSelectedArtist(artist.ArtistName); 
        //int selectedIndex = llsArtists.ItemsSource.IndexOf(llsArtists.SelectedItem as AlphaKeyGroup<Artist>); 
        NavigationService.Navigate(new Uri("/ArtistDetail.xaml", UriKind.Relative)); 
    } 
    
  2. , а затем с помощью LINQ, я итерация, чтобы получить мой SelectedItemIndex

Но я считаю, что это может быть извлекается простым .IndexOf, заменяя ItemsSource как источник AlphaKeyGroup. (Еще не проверял это)

public Artist GetSelectedArtist(string aName) 
     { 
      var result = (sourceArtists.Single(u => u.ArtistName == aName)); 
      var index = sourceArtists.IndexOf(result); 
      GlobalVars._artistID = index; 
      return result; 
     } 

 Смежные вопросы

  • Нет связанных вопросов^_^