C# 通过访问windows phone 7中的rest服务按字母顺序搜索记录

C# 通过访问windows phone 7中的rest服务按字母顺序搜索记录,c#,windows-phone-7,rest,C#,Windows Phone 7,Rest,我试图通过访问WindowsPhone7中的rest服务按字母顺序搜索记录 <controls:PivotItem Header="buddies"> <toolkit:LongListSelector x:Name="BookList" Background="Transparent" IsFlatList="true" GroupViewOpened="LongListSelector_Gr

我试图通过访问WindowsPhone7中的rest服务按字母顺序搜索记录

            <controls:PivotItem Header="buddies">
             <toolkit:LongListSelector x:Name="BookList" Background="Transparent" IsFlatList="true"  

              GroupViewOpened="LongListSelector_GroupViewOpened"
              GroupViewClosing="LongListSelector_GroupViewClosing">
                <toolkit:LongListSelector.GroupItemsPanel>
                    <ItemsPanelTemplate>
                        <toolkit:WrapPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </toolkit:LongListSelector.GroupItemsPanel>
                <toolkit:LongListSelector.GroupItemTemplate>
                    <DataTemplate>
                        <Border Background="{Binding Converter={StaticResource GroupBackground}}" 
                                Width="99" Height="99" Margin="6" IsHitTestVisible="{Binding HasItems}">
                            <TextBlock Text="{Binding Title}" 
                                       FontFamily="{StaticResource PhoneFontFamilySemiBold}"
                                       FontSize="48"
                                       Margin="8,0,0,0"
                                       Foreground="{Binding Converter={StaticResource GroupForeground}}"                                        
                                       VerticalAlignment="Bottom"/>
                            <Border.Projection>
                                <PlaneProjection RotationX="-60"/>
                            </Border.Projection>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupItemTemplate>
                <toolkit:LongListSelector.GroupHeaderTemplate>
                    <DataTemplate>
                        <Border Background="Transparent" Margin="12,8,0,8">
                            <Border Background="{StaticResource PhoneAccentBrush}"  
                                    Padding="8,0,0,0" Width="62" Height="62"                 
                                    HorizontalAlignment="Left">
                                <TextBlock Text="{Binding Title}" 
                                           Foreground="#FFFFFF" 
                                           FontSize="48"
                                           FontFamily="{StaticResource PhoneFontFamilySemiLight}"
                                           HorizontalAlignment="Left"
                                           VerticalAlignment="Bottom"/>
                            </Border>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupHeaderTemplate>
                <toolkit:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <Grid Margin="12,8,0,8">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Image Width="110" Height="150" Source="{Binding ImageUrl}" VerticalAlignment="Top"/>
                            <StackPanel Grid.Column="1" VerticalAlignment="Top">
                                <TextBlock Text="{Binding AutherName}" Style="{StaticResource PhoneTextLargeStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" Margin="12,-12,12,6"/>
                                <TextBlock Text="{Binding Email}" Style="{StaticResource PhoneTextNormalStyle}" TextWrapping="Wrap" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Title:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Title}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Price:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Price}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </toolkit:LongListSelector.ItemTemplate>

            </toolkit:LongListSelector>
            </controls:PivotItem>

    </controls:Pivot>
</Grid>
设计页面代码。。

            <controls:PivotItem Header="buddies">
             <toolkit:LongListSelector x:Name="BookList" Background="Transparent" IsFlatList="true"  

              GroupViewOpened="LongListSelector_GroupViewOpened"
              GroupViewClosing="LongListSelector_GroupViewClosing">
                <toolkit:LongListSelector.GroupItemsPanel>
                    <ItemsPanelTemplate>
                        <toolkit:WrapPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </toolkit:LongListSelector.GroupItemsPanel>
                <toolkit:LongListSelector.GroupItemTemplate>
                    <DataTemplate>
                        <Border Background="{Binding Converter={StaticResource GroupBackground}}" 
                                Width="99" Height="99" Margin="6" IsHitTestVisible="{Binding HasItems}">
                            <TextBlock Text="{Binding Title}" 
                                       FontFamily="{StaticResource PhoneFontFamilySemiBold}"
                                       FontSize="48"
                                       Margin="8,0,0,0"
                                       Foreground="{Binding Converter={StaticResource GroupForeground}}"                                        
                                       VerticalAlignment="Bottom"/>
                            <Border.Projection>
                                <PlaneProjection RotationX="-60"/>
                            </Border.Projection>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupItemTemplate>
                <toolkit:LongListSelector.GroupHeaderTemplate>
                    <DataTemplate>
                        <Border Background="Transparent" Margin="12,8,0,8">
                            <Border Background="{StaticResource PhoneAccentBrush}"  
                                    Padding="8,0,0,0" Width="62" Height="62"                 
                                    HorizontalAlignment="Left">
                                <TextBlock Text="{Binding Title}" 
                                           Foreground="#FFFFFF" 
                                           FontSize="48"
                                           FontFamily="{StaticResource PhoneFontFamilySemiLight}"
                                           HorizontalAlignment="Left"
                                           VerticalAlignment="Bottom"/>
                            </Border>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupHeaderTemplate>
                <toolkit:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <Grid Margin="12,8,0,8">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Image Width="110" Height="150" Source="{Binding ImageUrl}" VerticalAlignment="Top"/>
                            <StackPanel Grid.Column="1" VerticalAlignment="Top">
                                <TextBlock Text="{Binding AutherName}" Style="{StaticResource PhoneTextLargeStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" Margin="12,-12,12,6"/>
                                <TextBlock Text="{Binding Email}" Style="{StaticResource PhoneTextNormalStyle}" TextWrapping="Wrap" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Title:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Title}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Price:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Price}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </toolkit:LongListSelector.ItemTemplate>

            </toolkit:LongListSelector>
            </controls:PivotItem>

    </controls:Pivot>
</Grid>
这是我的MainPage.xaml.cs页面代码

            <controls:PivotItem Header="buddies">
             <toolkit:LongListSelector x:Name="BookList" Background="Transparent" IsFlatList="true"  

              GroupViewOpened="LongListSelector_GroupViewOpened"
              GroupViewClosing="LongListSelector_GroupViewClosing">
                <toolkit:LongListSelector.GroupItemsPanel>
                    <ItemsPanelTemplate>
                        <toolkit:WrapPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </toolkit:LongListSelector.GroupItemsPanel>
                <toolkit:LongListSelector.GroupItemTemplate>
                    <DataTemplate>
                        <Border Background="{Binding Converter={StaticResource GroupBackground}}" 
                                Width="99" Height="99" Margin="6" IsHitTestVisible="{Binding HasItems}">
                            <TextBlock Text="{Binding Title}" 
                                       FontFamily="{StaticResource PhoneFontFamilySemiBold}"
                                       FontSize="48"
                                       Margin="8,0,0,0"
                                       Foreground="{Binding Converter={StaticResource GroupForeground}}"                                        
                                       VerticalAlignment="Bottom"/>
                            <Border.Projection>
                                <PlaneProjection RotationX="-60"/>
                            </Border.Projection>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupItemTemplate>
                <toolkit:LongListSelector.GroupHeaderTemplate>
                    <DataTemplate>
                        <Border Background="Transparent" Margin="12,8,0,8">
                            <Border Background="{StaticResource PhoneAccentBrush}"  
                                    Padding="8,0,0,0" Width="62" Height="62"                 
                                    HorizontalAlignment="Left">
                                <TextBlock Text="{Binding Title}" 
                                           Foreground="#FFFFFF" 
                                           FontSize="48"
                                           FontFamily="{StaticResource PhoneFontFamilySemiLight}"
                                           HorizontalAlignment="Left"
                                           VerticalAlignment="Bottom"/>
                            </Border>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupHeaderTemplate>
                <toolkit:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <Grid Margin="12,8,0,8">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Image Width="110" Height="150" Source="{Binding ImageUrl}" VerticalAlignment="Top"/>
                            <StackPanel Grid.Column="1" VerticalAlignment="Top">
                                <TextBlock Text="{Binding AutherName}" Style="{StaticResource PhoneTextLargeStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" Margin="12,-12,12,6"/>
                                <TextBlock Text="{Binding Email}" Style="{StaticResource PhoneTextNormalStyle}" TextWrapping="Wrap" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Title:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Title}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Price:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Price}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </toolkit:LongListSelector.ItemTemplate>

            </toolkit:LongListSelector>
            </controls:PivotItem>

    </controls:Pivot>
</Grid>
  private LongListSelector currentSelector;
    List<Person> objperson = null; 
    // Constructor
    public MainPage()
    {
        InitializeComponent();
        string Categoryid = "2";
        WebClient proxy = new WebClient();
        proxy.DownloadStringAsync(new Uri("http://localhost:3160/Service1.svc/GetListItemDetail/" + Categoryid));
        proxy.DownloadStringCompleted += new DownloadStringCompletedEventHandler(proxy_DownloadStringCompleted);
    }


    void proxy_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        if (e.Error == null)
        {
            XDocument doc = XDocument.Load(new StringReader(e.Result));

            var CatList = (from item in doc.Descendants("ItemDetail")
                           select new Person
                           {
                               GenreName = item.Element("GenreName").Value.ToString(),
                               ItemID = Convert.ToInt32(item.Element("ItemID").Value),
                               CatID = Convert.ToInt32(item.Element("CatID").Value),
                               GenreID = Convert.ToInt32(item.Element("GenreID").Value),
                               AutherName = item.Element("AutherName").Value.ToString(),
                               Title = item.Element("Title").Value.ToString(),
                               Email = item.Element("Email").Value.ToString(),
                               Price = item.Element("Price").Value.ToString(),
                               Description = item.Element("Description").Value.ToString(),
                               ImageUrl = item.Element("ImageUrl").Value.ToString()
                           }).ToList();


            objperson = new List<Person>();  
            objperson = CatList;

            BookList.ItemsSource = CatList;
        }
    }





    public List<Person> GetPersonListInfo()
    {
        List<Person> objp = new List<Person>();

        objp = objperson; 


        return objp;


    }

    private void LongListSelector_GroupViewOpened(object sender, GroupViewOpenedEventArgs e)
    {
        //Hold a reference to the active long list selector.
        currentSelector = sender as LongListSelector;

        //Construct and begin a swivel animation to pop in the group view.
        IEasingFunction quadraticEase = new QuadraticEase { EasingMode = EasingMode.EaseOut };
        Storyboard _swivelShow = new Storyboard();
        ItemsControl groupItems = e.ItemsControl;

        foreach (var item in groupItems.Items)
        {
            UIElement container = groupItems.ItemContainerGenerator.ContainerFromItem(item) as UIElement;
            if (container != null)
            {
                Border content = VisualTreeHelper.GetChild(container, 0) as Border;
                if (content != null)
                {
                    DoubleAnimationUsingKeyFrames showAnimation = new DoubleAnimationUsingKeyFrames();

                    EasingDoubleKeyFrame showKeyFrame1 = new EasingDoubleKeyFrame();
                    showKeyFrame1.KeyTime = TimeSpan.FromMilliseconds(0);
                    showKeyFrame1.Value = -60;
                    showKeyFrame1.EasingFunction = quadraticEase;

                    EasingDoubleKeyFrame showKeyFrame2 = new EasingDoubleKeyFrame();
                    showKeyFrame2.KeyTime = TimeSpan.FromMilliseconds(85);
                    showKeyFrame2.Value = 0;
                    showKeyFrame2.EasingFunction = quadraticEase;

                    showAnimation.KeyFrames.Add(showKeyFrame1);
                    showAnimation.KeyFrames.Add(showKeyFrame2);

                    Storyboard.SetTargetProperty(showAnimation, new PropertyPath(PlaneProjection.RotationXProperty));
                    Storyboard.SetTarget(showAnimation, content.Projection);

                    _swivelShow.Children.Add(showAnimation);
                }
            }
        }

        _swivelShow.Begin();
    }
    private void LongListSelector_GroupViewClosing(object sender, GroupViewClosingEventArgs e)
    {
        //Cancelling automatic closing and scrolling to do it manually.
        e.Cancel = true;
        if (e.SelectedGroup != null)
        {
            currentSelector.ScrollToGroup(e.SelectedGroup);
        }

        //Dispatch the swivel animation for performance on the UI thread.
        Dispatcher.BeginInvoke(() =>
        {
            //Construct and begin a swivel animation to pop out the group view.
            IEasingFunction quadraticEase = new QuadraticEase { EasingMode = EasingMode.EaseOut };
            Storyboard _swivelHide = new Storyboard();
            ItemsControl groupItems = e.ItemsControl;

            foreach (var item in groupItems.Items)
            {
                UIElement container = groupItems.ItemContainerGenerator.ContainerFromItem(item) as UIElement;
                if (container != null)
                {
                    Border content = VisualTreeHelper.GetChild(container, 0) as Border;
                    if (content != null)
                    {
                        DoubleAnimationUsingKeyFrames showAnimation = new DoubleAnimationUsingKeyFrames();

                        EasingDoubleKeyFrame showKeyFrame1 = new EasingDoubleKeyFrame();
                        showKeyFrame1.KeyTime = TimeSpan.FromMilliseconds(0);
                        showKeyFrame1.Value = 0;
                        showKeyFrame1.EasingFunction = quadraticEase;

                        EasingDoubleKeyFrame showKeyFrame2 = new EasingDoubleKeyFrame();
                        showKeyFrame2.KeyTime = TimeSpan.FromMilliseconds(125);
                        showKeyFrame2.Value = 90;
                        showKeyFrame2.EasingFunction = quadraticEase;

                        showAnimation.KeyFrames.Add(showKeyFrame1);
                        showAnimation.KeyFrames.Add(showKeyFrame2);

                        Storyboard.SetTargetProperty(showAnimation, new PropertyPath(PlaneProjection.RotationXProperty));
                        Storyboard.SetTarget(showAnimation, content.Projection);

                        _swivelHide.Children.Add(showAnimation);
                    }
                }
            }

            _swivelHide.Completed += _swivelHide_Completed;
            _swivelHide.Begin();

        });
    }
    private void _swivelHide_Completed(object sender, EventArgs e)
    {
        //Close group view.
        if (currentSelector != null)
        {
            currentSelector.CloseGroupView();
            currentSelector = null;
        }
    }

我是WindowsPhone7应用程序开发新手,不知道如何在Longlistselector中对字母进行分组。请帮帮我。提前感谢。

一种非常简单的方法是为LongListSelector使用专门的集合

            <controls:PivotItem Header="buddies">
             <toolkit:LongListSelector x:Name="BookList" Background="Transparent" IsFlatList="true"  

              GroupViewOpened="LongListSelector_GroupViewOpened"
              GroupViewClosing="LongListSelector_GroupViewClosing">
                <toolkit:LongListSelector.GroupItemsPanel>
                    <ItemsPanelTemplate>
                        <toolkit:WrapPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </toolkit:LongListSelector.GroupItemsPanel>
                <toolkit:LongListSelector.GroupItemTemplate>
                    <DataTemplate>
                        <Border Background="{Binding Converter={StaticResource GroupBackground}}" 
                                Width="99" Height="99" Margin="6" IsHitTestVisible="{Binding HasItems}">
                            <TextBlock Text="{Binding Title}" 
                                       FontFamily="{StaticResource PhoneFontFamilySemiBold}"
                                       FontSize="48"
                                       Margin="8,0,0,0"
                                       Foreground="{Binding Converter={StaticResource GroupForeground}}"                                        
                                       VerticalAlignment="Bottom"/>
                            <Border.Projection>
                                <PlaneProjection RotationX="-60"/>
                            </Border.Projection>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupItemTemplate>
                <toolkit:LongListSelector.GroupHeaderTemplate>
                    <DataTemplate>
                        <Border Background="Transparent" Margin="12,8,0,8">
                            <Border Background="{StaticResource PhoneAccentBrush}"  
                                    Padding="8,0,0,0" Width="62" Height="62"                 
                                    HorizontalAlignment="Left">
                                <TextBlock Text="{Binding Title}" 
                                           Foreground="#FFFFFF" 
                                           FontSize="48"
                                           FontFamily="{StaticResource PhoneFontFamilySemiLight}"
                                           HorizontalAlignment="Left"
                                           VerticalAlignment="Bottom"/>
                            </Border>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupHeaderTemplate>
                <toolkit:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <Grid Margin="12,8,0,8">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Image Width="110" Height="150" Source="{Binding ImageUrl}" VerticalAlignment="Top"/>
                            <StackPanel Grid.Column="1" VerticalAlignment="Top">
                                <TextBlock Text="{Binding AutherName}" Style="{StaticResource PhoneTextLargeStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" Margin="12,-12,12,6"/>
                                <TextBlock Text="{Binding Email}" Style="{StaticResource PhoneTextNormalStyle}" TextWrapping="Wrap" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Title:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Title}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Price:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Price}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </toolkit:LongListSelector.ItemTemplate>

            </toolkit:LongListSelector>
            </controls:PivotItem>

    </controls:Pivot>
</Grid>
基本上,您可以将代码更改为以下内容:

            <controls:PivotItem Header="buddies">
             <toolkit:LongListSelector x:Name="BookList" Background="Transparent" IsFlatList="true"  

              GroupViewOpened="LongListSelector_GroupViewOpened"
              GroupViewClosing="LongListSelector_GroupViewClosing">
                <toolkit:LongListSelector.GroupItemsPanel>
                    <ItemsPanelTemplate>
                        <toolkit:WrapPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </toolkit:LongListSelector.GroupItemsPanel>
                <toolkit:LongListSelector.GroupItemTemplate>
                    <DataTemplate>
                        <Border Background="{Binding Converter={StaticResource GroupBackground}}" 
                                Width="99" Height="99" Margin="6" IsHitTestVisible="{Binding HasItems}">
                            <TextBlock Text="{Binding Title}" 
                                       FontFamily="{StaticResource PhoneFontFamilySemiBold}"
                                       FontSize="48"
                                       Margin="8,0,0,0"
                                       Foreground="{Binding Converter={StaticResource GroupForeground}}"                                        
                                       VerticalAlignment="Bottom"/>
                            <Border.Projection>
                                <PlaneProjection RotationX="-60"/>
                            </Border.Projection>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupItemTemplate>
                <toolkit:LongListSelector.GroupHeaderTemplate>
                    <DataTemplate>
                        <Border Background="Transparent" Margin="12,8,0,8">
                            <Border Background="{StaticResource PhoneAccentBrush}"  
                                    Padding="8,0,0,0" Width="62" Height="62"                 
                                    HorizontalAlignment="Left">
                                <TextBlock Text="{Binding Title}" 
                                           Foreground="#FFFFFF" 
                                           FontSize="48"
                                           FontFamily="{StaticResource PhoneFontFamilySemiLight}"
                                           HorizontalAlignment="Left"
                                           VerticalAlignment="Bottom"/>
                            </Border>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupHeaderTemplate>
                <toolkit:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <Grid Margin="12,8,0,8">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Image Width="110" Height="150" Source="{Binding ImageUrl}" VerticalAlignment="Top"/>
                            <StackPanel Grid.Column="1" VerticalAlignment="Top">
                                <TextBlock Text="{Binding AutherName}" Style="{StaticResource PhoneTextLargeStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" Margin="12,-12,12,6"/>
                                <TextBlock Text="{Binding Email}" Style="{StaticResource PhoneTextNormalStyle}" TextWrapping="Wrap" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Title:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Title}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Price:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Price}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </toolkit:LongListSelector.ItemTemplate>

            </toolkit:LongListSelector>
            </controls:PivotItem>

    </controls:Pivot>
</Grid>
BookList.ItemsSource = new LongListCollection<Person, char>(CatList, x => x.Title[0]));

有一段代码我曾经用于分组。如你所见,它与克劳斯的相似:

            <controls:PivotItem Header="buddies">
             <toolkit:LongListSelector x:Name="BookList" Background="Transparent" IsFlatList="true"  

              GroupViewOpened="LongListSelector_GroupViewOpened"
              GroupViewClosing="LongListSelector_GroupViewClosing">
                <toolkit:LongListSelector.GroupItemsPanel>
                    <ItemsPanelTemplate>
                        <toolkit:WrapPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </toolkit:LongListSelector.GroupItemsPanel>
                <toolkit:LongListSelector.GroupItemTemplate>
                    <DataTemplate>
                        <Border Background="{Binding Converter={StaticResource GroupBackground}}" 
                                Width="99" Height="99" Margin="6" IsHitTestVisible="{Binding HasItems}">
                            <TextBlock Text="{Binding Title}" 
                                       FontFamily="{StaticResource PhoneFontFamilySemiBold}"
                                       FontSize="48"
                                       Margin="8,0,0,0"
                                       Foreground="{Binding Converter={StaticResource GroupForeground}}"                                        
                                       VerticalAlignment="Bottom"/>
                            <Border.Projection>
                                <PlaneProjection RotationX="-60"/>
                            </Border.Projection>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupItemTemplate>
                <toolkit:LongListSelector.GroupHeaderTemplate>
                    <DataTemplate>
                        <Border Background="Transparent" Margin="12,8,0,8">
                            <Border Background="{StaticResource PhoneAccentBrush}"  
                                    Padding="8,0,0,0" Width="62" Height="62"                 
                                    HorizontalAlignment="Left">
                                <TextBlock Text="{Binding Title}" 
                                           Foreground="#FFFFFF" 
                                           FontSize="48"
                                           FontFamily="{StaticResource PhoneFontFamilySemiLight}"
                                           HorizontalAlignment="Left"
                                           VerticalAlignment="Bottom"/>
                            </Border>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupHeaderTemplate>
                <toolkit:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <Grid Margin="12,8,0,8">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Image Width="110" Height="150" Source="{Binding ImageUrl}" VerticalAlignment="Top"/>
                            <StackPanel Grid.Column="1" VerticalAlignment="Top">
                                <TextBlock Text="{Binding AutherName}" Style="{StaticResource PhoneTextLargeStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" Margin="12,-12,12,6"/>
                                <TextBlock Text="{Binding Email}" Style="{StaticResource PhoneTextNormalStyle}" TextWrapping="Wrap" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Title:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Title}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Price:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Price}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </toolkit:LongListSelector.ItemTemplate>

            </toolkit:LongListSelector>
            </controls:PivotItem>

    </controls:Pivot>
</Grid>
public class YourList : ObservableCollection<ItemsInGroup>
{
    private static readonly string Groups = "#abcdefghijklmnopqrstuvwxyz";

    Dictionary<string, ItemsInGroup> groups = new Dictionary<string, ItemsInGroup>();

    public YourList()
    {
        foreach (char c in Groups)
        {
            ItemsInGroup group = new ItemsInGroup(c.ToString());
            this.Add(group);
            groups[c.ToString()] = group;
        }
    }

    public void AddItem(Item item)
    {
        string GroupKey = Item.GetSomeFieldKey(item);// a, b, etc.

        for (int i = 0; i < groups[GroupKey].Count; i++)
        {
            if (Item.CompareBySomeField(item, groups[GroupKey][i]) < 0)
            {
                groups[Item.GetSomeFilesKey(item)].Insert(i, item);
                return;
            }
        }
        groups[GroupKey].Add(item);
    }
}

            <controls:PivotItem Header="buddies">
             <toolkit:LongListSelector x:Name="BookList" Background="Transparent" IsFlatList="true"  

              GroupViewOpened="LongListSelector_GroupViewOpened"
              GroupViewClosing="LongListSelector_GroupViewClosing">
                <toolkit:LongListSelector.GroupItemsPanel>
                    <ItemsPanelTemplate>
                        <toolkit:WrapPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </toolkit:LongListSelector.GroupItemsPanel>
                <toolkit:LongListSelector.GroupItemTemplate>
                    <DataTemplate>
                        <Border Background="{Binding Converter={StaticResource GroupBackground}}" 
                                Width="99" Height="99" Margin="6" IsHitTestVisible="{Binding HasItems}">
                            <TextBlock Text="{Binding Title}" 
                                       FontFamily="{StaticResource PhoneFontFamilySemiBold}"
                                       FontSize="48"
                                       Margin="8,0,0,0"
                                       Foreground="{Binding Converter={StaticResource GroupForeground}}"                                        
                                       VerticalAlignment="Bottom"/>
                            <Border.Projection>
                                <PlaneProjection RotationX="-60"/>
                            </Border.Projection>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupItemTemplate>
                <toolkit:LongListSelector.GroupHeaderTemplate>
                    <DataTemplate>
                        <Border Background="Transparent" Margin="12,8,0,8">
                            <Border Background="{StaticResource PhoneAccentBrush}"  
                                    Padding="8,0,0,0" Width="62" Height="62"                 
                                    HorizontalAlignment="Left">
                                <TextBlock Text="{Binding Title}" 
                                           Foreground="#FFFFFF" 
                                           FontSize="48"
                                           FontFamily="{StaticResource PhoneFontFamilySemiLight}"
                                           HorizontalAlignment="Left"
                                           VerticalAlignment="Bottom"/>
                            </Border>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupHeaderTemplate>
                <toolkit:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <Grid Margin="12,8,0,8">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Image Width="110" Height="150" Source="{Binding ImageUrl}" VerticalAlignment="Top"/>
                            <StackPanel Grid.Column="1" VerticalAlignment="Top">
                                <TextBlock Text="{Binding AutherName}" Style="{StaticResource PhoneTextLargeStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" Margin="12,-12,12,6"/>
                                <TextBlock Text="{Binding Email}" Style="{StaticResource PhoneTextNormalStyle}" TextWrapping="Wrap" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Title:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Title}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Price:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Price}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </toolkit:LongListSelector.ItemTemplate>

            </toolkit:LongListSelector>
            </controls:PivotItem>

    </controls:Pivot>
</Grid>
用法:

            <controls:PivotItem Header="buddies">
             <toolkit:LongListSelector x:Name="BookList" Background="Transparent" IsFlatList="true"  

              GroupViewOpened="LongListSelector_GroupViewOpened"
              GroupViewClosing="LongListSelector_GroupViewClosing">
                <toolkit:LongListSelector.GroupItemsPanel>
                    <ItemsPanelTemplate>
                        <toolkit:WrapPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </toolkit:LongListSelector.GroupItemsPanel>
                <toolkit:LongListSelector.GroupItemTemplate>
                    <DataTemplate>
                        <Border Background="{Binding Converter={StaticResource GroupBackground}}" 
                                Width="99" Height="99" Margin="6" IsHitTestVisible="{Binding HasItems}">
                            <TextBlock Text="{Binding Title}" 
                                       FontFamily="{StaticResource PhoneFontFamilySemiBold}"
                                       FontSize="48"
                                       Margin="8,0,0,0"
                                       Foreground="{Binding Converter={StaticResource GroupForeground}}"                                        
                                       VerticalAlignment="Bottom"/>
                            <Border.Projection>
                                <PlaneProjection RotationX="-60"/>
                            </Border.Projection>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupItemTemplate>
                <toolkit:LongListSelector.GroupHeaderTemplate>
                    <DataTemplate>
                        <Border Background="Transparent" Margin="12,8,0,8">
                            <Border Background="{StaticResource PhoneAccentBrush}"  
                                    Padding="8,0,0,0" Width="62" Height="62"                 
                                    HorizontalAlignment="Left">
                                <TextBlock Text="{Binding Title}" 
                                           Foreground="#FFFFFF" 
                                           FontSize="48"
                                           FontFamily="{StaticResource PhoneFontFamilySemiLight}"
                                           HorizontalAlignment="Left"
                                           VerticalAlignment="Bottom"/>
                            </Border>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupHeaderTemplate>
                <toolkit:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <Grid Margin="12,8,0,8">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Image Width="110" Height="150" Source="{Binding ImageUrl}" VerticalAlignment="Top"/>
                            <StackPanel Grid.Column="1" VerticalAlignment="Top">
                                <TextBlock Text="{Binding AutherName}" Style="{StaticResource PhoneTextLargeStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" Margin="12,-12,12,6"/>
                                <TextBlock Text="{Binding Email}" Style="{StaticResource PhoneTextNormalStyle}" TextWrapping="Wrap" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Title:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Title}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Price:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Price}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </toolkit:LongListSelector.ItemTemplate>

            </toolkit:LongListSelector>
            </controls:PivotItem>

    </controls:Pivot>
</Grid>
 YourList list = new YourList();
 foreach (var item in resultListFromService)
 {
      list.AddItem(item); // fill list with items
 }
 myList.ItemsSource = list; // bind to UI

希望这有助于更好地理解它的工作原理

您可以从silverlight toolkit网站下载示例。这里有一个很好的按字母顺序分组的例子,其中包含所有您需要的类和体系结构解决方案。实际上,我正在下载示例工具包,但其中有一些硬代码数据需要传递。。。。。。我正在尝试从rest服务获取数据并绑定到长列表选择器Orry。。。但这不起作用。。。。事实上,如果你看到Silverlight for Windows Phone Toolkit源代码和示例-2011年8月,我发现他们使用longlistselector,但它是硬编码的,我想动态调用rest服务和分组字母CallyRight,所以很明显,你的问题是你对C编程一无所知;-您需要仔细阅读ObservableCollection的用法。正如您所注意到的,如果您读取LongListCollection的源代码,它是一个可观察的集合,如果您添加/删除它,它将自动更新。现在,去读一些东西!这就是为什么像我这样的通用实现要漂亮得多。必须在域模型上实现特定于用户界面的代码是疯狂的!
            <controls:PivotItem Header="buddies">
             <toolkit:LongListSelector x:Name="BookList" Background="Transparent" IsFlatList="true"  

              GroupViewOpened="LongListSelector_GroupViewOpened"
              GroupViewClosing="LongListSelector_GroupViewClosing">
                <toolkit:LongListSelector.GroupItemsPanel>
                    <ItemsPanelTemplate>
                        <toolkit:WrapPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </toolkit:LongListSelector.GroupItemsPanel>
                <toolkit:LongListSelector.GroupItemTemplate>
                    <DataTemplate>
                        <Border Background="{Binding Converter={StaticResource GroupBackground}}" 
                                Width="99" Height="99" Margin="6" IsHitTestVisible="{Binding HasItems}">
                            <TextBlock Text="{Binding Title}" 
                                       FontFamily="{StaticResource PhoneFontFamilySemiBold}"
                                       FontSize="48"
                                       Margin="8,0,0,0"
                                       Foreground="{Binding Converter={StaticResource GroupForeground}}"                                        
                                       VerticalAlignment="Bottom"/>
                            <Border.Projection>
                                <PlaneProjection RotationX="-60"/>
                            </Border.Projection>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupItemTemplate>
                <toolkit:LongListSelector.GroupHeaderTemplate>
                    <DataTemplate>
                        <Border Background="Transparent" Margin="12,8,0,8">
                            <Border Background="{StaticResource PhoneAccentBrush}"  
                                    Padding="8,0,0,0" Width="62" Height="62"                 
                                    HorizontalAlignment="Left">
                                <TextBlock Text="{Binding Title}" 
                                           Foreground="#FFFFFF" 
                                           FontSize="48"
                                           FontFamily="{StaticResource PhoneFontFamilySemiLight}"
                                           HorizontalAlignment="Left"
                                           VerticalAlignment="Bottom"/>
                            </Border>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupHeaderTemplate>
                <toolkit:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <Grid Margin="12,8,0,8">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Image Width="110" Height="150" Source="{Binding ImageUrl}" VerticalAlignment="Top"/>
                            <StackPanel Grid.Column="1" VerticalAlignment="Top">
                                <TextBlock Text="{Binding AutherName}" Style="{StaticResource PhoneTextLargeStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" Margin="12,-12,12,6"/>
                                <TextBlock Text="{Binding Email}" Style="{StaticResource PhoneTextNormalStyle}" TextWrapping="Wrap" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Title:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Title}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Price:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                    <TextBlock Text="{Binding Price}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                                </StackPanel>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </toolkit:LongListSelector.ItemTemplate>

            </toolkit:LongListSelector>
            </controls:PivotItem>

    </controls:Pivot>
</Grid>