2014-06-12 2 views
1

윈도우 폰에서 작동하지 : http://modernography.wordpress.com/2014/04/26/jumplists-in-windows-phone-8-1/JumpList에 내가이 페이지의 튜토리얼을 따라 8.1

나는 collectionviewsource 있습니다

<PivotItem x:Name="artists" Margin="10,0"> 
    <SemanticZoom Style="{StaticResource AlphaJumpListStyle}"> 
     <SemanticZoom.ZoomedInView> 
      <ListView Background="Transparent" ItemsSource="{Binding ArtistList.View}" Loaded="ListviewLoaded"> 
       <ListView.GroupStyle> 
        <GroupStyle HeaderTemplate="{StaticResource AlphaGroupHeaderTemplate}" HeaderContainerStyle="{StaticResource JumpListListHeaderContainerStyle}" HidesIfEmpty="True" /> 
       </ListView.GroupStyle> 
       <ListView.ItemTemplate> 
        <DataTemplate> 
         <StackPanel Grid.Column="1" Margin="10,5" Tapped="ArtistSelected"> 
          <TextBlock FontFamily="Segoe WP" FontSize="22" Foreground="White" Text="{Binding name}" HorizontalAlignment="Left" VerticalAlignment="Top" Width="{Binding ActualWidth, ElementName=parentElementName}"/> 
          <TextBlock FontFamily="Segoe WP" FontWeight="Light" FontSize="17" Foreground="#7FFFFFFF" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,-5,0,0"> 
         <Run Text="{Binding amountofalbums}"/> 
         <Run Text="albums"/> 
          </TextBlock> 
         </StackPanel> 
        </DataTemplate> 
       </ListView.ItemTemplate> 
      </ListView> 
     </SemanticZoom.ZoomedInView> 
     <SemanticZoom.ZoomedOutView> 
      <GridView ItemsSource="{Binding ArtistList.View.CollectionGroups}" Style="{StaticResource AlphaJumpListPickerStyle}" /> 
     </SemanticZoom.ZoomedOutView> 
    </SemanticZoom> 
</PivotItem> 
: 내 XAML에 결합

// artistdata 
public CollectionViewSource ArtistList 
{ 
    get 
    { 
     var data = App.musicdata.Artists; 
     var groups = data.ToAlphaGroups(x => x.name); 
     _ArtistList = new CollectionViewSource(); 
     _ArtistList.Source = groups; //groups is the result of using my extension methods above 
     _ArtistList.IsSourceGrouped = true; 

     return _ArtistList; 
    } 
} 

모두 올바르게 표시됩니다. JumpList를 열고 닫을 수 있습니다. 그러나 zoomedoutview에서 문자를 두드리면 zoomedinview가 해당 문자로 건너 뛰지 않습니다. 대신, 그것은 그것이 있던 곳을 유지합니까?

이 문제의 원인을 찾을 수 없습니다. 어쩌면 문제는 SementicZoom이 Pivot 내부에 있다는 것입니까?

답변

1

ListView와 GridView가 CollectionView의 다른 인스턴스를 얻고 있기 때문에 문제가 있다고 생각합니다. 예제에서 보듯이 처음 생성 된 인스턴스는 캐시해야합니다.

코드가 있어야한다 :

public CollectionViewSource ArtistList 
{ 
    get 
    { 
     if(_ArtistList == null) 
     { 
      var data = App.musicdata.Artists; 
      var groups = data.ToAlphaGroups(x => x.name); 
      _ArtistList = new CollectionViewSource(); 
      _ArtistList.Source = groups; //groups is the result of using my extension methods above 
      _ArtistList.IsSourceGrouped = true; 
     } 
     return _ArtistList; 
    } 
} 
+0

Jup, 당신 말이 맞아! 고마워. –

관련 문제