title: Custom Jump lists in Windows Phone
body: <p>I have been looking at this: <a href="http://code.msdn.microsoft.com/wpapps/Custom-LongList-Selector-bf8cb9ad" rel="nofollow">http://code.msdn.microsoft.com/wpapps/Custom-LongList-Selector-bf8cb9ad</a> and trying to incorporate into my app. However, its a little confusing since my data is loaded differently. Right now, I have two errors The best overloaded method match for CustomKeyGroup&lt;.ViewModels.SoundData>.GetSoundGroups(System.Collections.Generic.List&lt;.ViewModels.SoundData>)' has some invalid arguments </p>
  
  <p>Argument 1: cannot convert from 'string' to 'System.Collections.Generic.List'</p>
  
  <p>The error is at 'CustomKeyGroup.GetSoundGroups(mvm.Items);' from the mainpage.cs. I know the items is an issue. If you look at the link, they load the data differently w/ listmovie.add.    </p>
  
  <p>I know something is screwed up big time but since my data is loaded different, im struggling to get it working correctly. </p>
  
  <p>Id like to have custom jumplist w/ headers by Groups (Alpha, Bravo, etc) located in my SoundModel. Here is a portion:</p>
  
  <pre><code>namespace T.ViewModels
  {
      public class SoundModel: BindableBase
      {
          public SoundGroup NewAdds { get; set; }
          public SoundGroup Software { get; set; }
  
          }
  
          public bool IsDataLoaded { get; set; }
  
  
  
          public void LoadData()
          {
              // Load data into the model
              Software = CreateSoftwareGroup();
              NewAdds = CreateNewAddsGroup();
  
  
              IsDataLoaded = true;
          }
  
          private SoundGroup CreateNewAddsGroup()
          {
              SoundGroup data = new SoundGroup();
              data.Title = "New";
              string basePath = "assets/audio/newadds/";
  
                 data.Items.Add(new SoundData
              {
                  Title = "Test1",
                  FilePath = basePath + "Test.mp3",
                  Groups = "Alpha"
              });
  
  
  
              data.Items.Add(new SoundData
              {
                  Title = "Test2",
                  FilePath = basePath + "Test2.mp3",
                  Groups="Bravo"
              });
  
  
              data.Items.Add(new SoundData
              {
                  Title = "Test3",
                  FilePath = basePath + "Test3.mp3",
                  Groups= "Zulu"
              });
  
    private SoundGroup CreateSoftwareGroup()
          {
              SoundGroup data = new SoundGroup();
  
              data.Title = "Software";
              string basePath = "assets/audio/Software/";
  
              data.Items.Add(new SoundData
              {
                  Title = "Test1",
                  FilePath = basePath + "Test.mp3",
                  Groups = "Alpha"
              });
  
              data.Items.Add(new SoundData
              {
                  Title = "Test2",
                  FilePath = basePath + "Test2.mp3",
                  Groups="Bravo"
              });
  
  
              data.Items.Add(new SoundData
              {
                  Title = "Test3",
                  FilePath = basePath + "Test3.mp3",
                  Groups= "Zulu"
              });
  </code></pre>
  
  <p>Here is the relevant mainpage.cs:</p>
  
  <pre><code>SoundData mvm = new SoundData();
  
              this.LongList.ItemsSource = CustomKeyGroup&lt;SoundData&gt;.GetSoundGroups(mvm.Items);
  </code></pre>
  
  <p>SoundGroup:</p>
  
  <pre><code>{
      public class SoundGroup
      {
          public SoundGroup()
          {
              Items = new List&lt;SoundData&gt;();
          }
  
          public List&lt;SoundData&gt; Items { get; set; }
          public string Title { get; set; }
          public string Groups { get; set; }
  
      }
  }
  </code></pre>
  
  <p>SoundData :</p>
  
  <pre><code>{
      public class SoundData : ViewModelBase
      {
          public string Title { get; set; }
          public string FilePath { get; set; }
          public string Items { get; set; }
          public string Groups { get; set; }
  
  
          public RelayCommand&lt;string&gt; SaveSoundAsRingtone { get; set; }
  
  
          private void ExecuteSaveSoundAsRingtone(string soundPath)
          {
              App.Current.RootVisual.Dispatcher.BeginInvoke(() =&gt;
              {
                  SaveRingtoneTask task = new SaveRingtoneTask();
                  task.Source = new Uri("appdata:/" + this.FilePath);
                  task.DisplayName = this.Title;
                  task.Show();
              }
                  );
          }   
  
          public SoundData()
          {
              SaveSoundAsRingtone = new RelayCommand&lt;string&gt;(ExecuteSaveSoundAsRingtone);
          }
  
      }
  }
  </code></pre>