WP7之LongListSelector控件

 1.引用:Microsoft.Phone.Controls.Toolkit空間

2.xaml:

  1. <toolkit:LongListSelector x:Name="LongList" Background="Transparent" Margin="0,0,0,0">  
  2.                 <toolkit:LongListSelector.GroupItemsPanel>  
  3.                     <ItemsPanelTemplate>  
  4.                         <toolkit:WrapPanel Orientation="Horizontal"/>  
  5.                     </ItemsPanelTemplate>  
  6.                 </toolkit:LongListSelector.GroupItemsPanel>  
  7.                  
  8.                 <toolkit:LongListSelector.GroupItemTemplate>  
  9.                     <DataTemplate>  
  10.                         <Border Background="{StaticResource PhoneAccentBrush}" Width="99" Height="99" Margin="6" >  
  11.                             <TextBlock Text="{Binding GroupItem}"  
  12.                                            FontFamily="{StaticResource PhoneFontFamilySemiBold}"  
  13.                                            FontSize="48"  
  14.                                            Margin="8,0,0,0"  
  15.                                            Foreground="White"                                         
  16.                                            VerticalAlignment="Bottom"/>  
  17.                         </Border>  
  18.                     </DataTemplate>  
  19.                 </toolkit:LongListSelector.GroupItemTemplate>  
  20.                  
  21.                 <toolkit:LongListSelector.GroupHeaderTemplate>  
  22.                     <DataTemplate>  
  23.                         <Border Background="Transparent" Margin="12,8,0,8">  
  24.                             <Border Background="{StaticResource PhoneAccentBrush}"      
  25.                                         Padding="8,0,0,0" Width="62" Height="62"                   
  26.                                         HorizontalAlignment="Left">  
  27.                                 <TextBlock Text="{Binding GroupItem}"  
  28.                                                Foreground="#FFFFFF"  
  29.                                                FontSize="48"  
  30.                                                FontFamily="{StaticResource PhoneFontFamilySemiLight}"  
  31.                                                HorizontalAlignment="Left"  
  32.                                                VerticalAlignment="Bottom"/>  
  33.                             </Border>  
  34.                         </Border>  
  35.                     </DataTemplate>  
  36.                 </toolkit:LongListSelector.GroupHeaderTemplate>  
  37.                  
  38.                 <toolkit:LongListSelector.ItemTemplate>  
  39.                     <DataTemplate>  
  40.                         <Grid Margin="12,8,0,8">  
  41.                             <Grid.ColumnDefinitions>  
  42.                                 <ColumnDefinition Width="Auto"/>  
  43.                                 <ColumnDefinition Width="*"/>  
  44.                             </Grid.ColumnDefinitions>  
  45.                             <StackPanel Grid.Column="1" VerticalAlignment="Top">  
  46.                                 <TextBlock Text="{Binding Name}" Style="{StaticResource PhoneTextLargeStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" Margin="12,-12,12,6"/>  
  47.                                 <TextBlock Text="{Binding Content}" Style="{StaticResource PhoneTextNormalStyle}" TextWrapping="Wrap" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>  
  48.                             </StackPanel>  
  49.                         </Grid>  
  50.                     </DataTemplate>  
  51.                 </toolkit:LongListSelector.ItemTemplate>  
  52.             </toolkit:LongListSelector> 
  53. 3.後臺cs代碼 
  54. public partial class MainPage : PhoneApplicationPage  
  55. {  
  56.     // Constructor  
  57.     public MainPage()  
  58.     {  
  59.         InitializeComponent();  
  60.         Loaded += new RoutedEventHandler(MainPage_Loaded);  
  61.         LongList.SelectionChanged += new SelectionChangedEventHandler(LongList_SelectionChanged);  
  62.     } 
  63.     void LongList_SelectionChanged(object sender, SelectionChangedEventArgs e)  
  64.     {  
  65.         if (LongList.SelectedItem != null)  
  66.         {  
  67.             var d = LongList.SelectedItem as mydata;  
  68.             if (d != null)  
  69.             {  
  70.                 
  71.             }  
  72.         }  
  73.     } 
  74.     void MainPage_Loaded(object sender, RoutedEventArgs e)  
  75.     {  
  76.         List<Group<string, mydata>> dt = new List<Group<string, mydata>>();  
  77.         for (int i = 0; i < 10; i++)  
  78.         {  
  79.             dt.Add(new Group<string, mydata>(i.ToString(), getContent(i)));  
  80.         }  
  81.         LongList.ItemsSource = dt;  
  82.     } 
  83.     IEnumerable<mydata> getContent(int k)  
  84.     {  
  85.         List<mydata> dt = new List<mydata>();  
  86.         for (int i = 0; i < 10; i++)  
  87.         {  
  88.             dt.Add(new mydata() { Name = i.ToString() + "key", Content = i.ToString() + "val" });  
  89.         }  
  90.         return dt;  
  91.     }  
  92. public class Group<S, T> : IEnumerable<T>  
  93. {  
  94.     public Group(S groupItem, IEnumerable<T> items)  
  95.     {  
  96.         this.GroupItem = groupItem;  
  97.         this.Items = new List<T>(items);  
  98.     } 
  99.     public override bool Equals(object obj)  
  100.     {  
  101.         Group<S, T> other = obj as Group<S, T>;  
  102.         return (other != null) && (GroupItem.Equals(other.GroupItem));  
  103.     }  
  104.     public override int GetHashCode()  
  105.     {  
  106.         return GroupItem.GetHashCode();  
  107.     } 
  108.     public S GroupItem { get; set; }  
  109.     public IList<T> Items { get; set; } 
  110.     public IEnumerator<T> GetEnumerator()  
  111.     {  
  112.         return Items.GetEnumerator();  
  113.     } 
  114.     System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()  
  115.     {  
  116.         return Items.GetEnumerator();  
  117.     }  
  118. public class mydata  
  119. {  
  120.     public string Name { get; set; }  
  121.     public string Content { get; set; }  
  122. }  

運行效果:

imageimage

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章