Windows Phone LongListSelector的数据绑定应用,以及获取item的值

<phone:PhoneApplicationPage.Resources>

        <!--定义组头绑定模板-->

        <DataTemplate x:Key="GroupHeader">

            <Border Background="{StaticResource PhoneAccentBrush}" Margin="{StaticResource PhoneTouchTargetOverhang}" Padding="{StaticResource PhoneTouchTargetOverhang}">

                <StackPanel>

                    <TextBlock Text="{Binding Key}"/>

                </StackPanel>

            </Border>

        </DataTemplate>

        <!--定义组选项绑定模板-->

        <DataTemplate x:Key="GroupItem">

            <Border Background="{StaticResource PhoneAccentBrush}" Margin="{StaticResource PhoneTouchTargetOverhang}" Padding="{StaticResource PhoneTouchTargetOverhang}">

                <TextBlock Text="{Binding Key}" Style="{StaticResource PhoneTextLargeStyle}"/>

            </Border>

        </DataTemplate>

        <!--定义列头绑定模板-->

        <DataTemplate x:Key="ListHeader">

            <TextBlock Text="城市列表" Style="{StaticResource PhoneTextTitle1Style}"/>

        </DataTemplate>

        <!--定义列表选项绑定模板-->

        <DataTemplate x:Key="ItemTmpl">

            <Grid Margin="10,0,0,0">

                <TextBlock Text="{Binding Cname}" Tap="TextBlock_Tap"></TextBlock>

            </Grid>

        </DataTemplate>

    </phone:PhoneApplicationPage.Resources>



    <!--LayoutRoot 是包含所有页面内容的根网格-->

    <Grid x:Name="LayoutRoot" Background="Transparent">





        <!--TitlePanel 包含应用程序的名称和页标题-->

        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"></StackPanel>



        <!--ContentPanel - 在此处放置其他内容-->

        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

            <toolkit:LongListSelector x:Name="LongList" Background="Transparent"

                    ItemTemplate="{StaticResource ItemTmpl}"

                    ListHeaderTemplate="{StaticResource ListHeader}"

                    GroupHeaderTemplate="{StaticResource GroupHeader}"

                    GroupItemTemplate="{StaticResource GroupItem}" Tap="LongList_Tap">

            </toolkit:LongListSelector>

        </Grid>

    </Grid>
public partial class SelectCity : PhoneApplicationPage

    {

        private string cityname;

        public SelectCity()

        {

            InitializeComponent();

            CityList();

        }



        //继承Linq的IGrouping接口  来存储分组的数据

        public class GroupingLayer : IGrouping

        {

            //分组数据

            private readonly IGrouping grouping;

            //初始化

            public GroupingLayer(IGrouping unit)

            {

                grouping = unit;

            }

            //唯一的键值

            public TKey Key

            {

                get { return grouping.Key; }

            }

            //重载判断相等方法

            public override bool Equals(object obj)

            {

                GroupingLayer that = obj as GroupingLayer;

                return (that != null) && (this.Key.Equals(that.Key));

            }

            public IEnumerator GetEnumerator()

            {

                return grouping.GetEnumerator();

            }

            System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()

            {

                return grouping.GetEnumerator();

            }

        }



        //List选项的类  Content表示类别 Title表示选项的标题

        public class Item

        {

            public string Title { get; set; }

            public string Content { get; set; }

        }



        void CityList()

        {

            Uri url = new Uri("http://");

            string cont = "http:///\" xmlns:tem="http://\">"

                          +""

                          +""

                          +""

                          +" 111"

                          +""

                          +" 111"

                          +""

                          +""

                          +""

                          +""

                          +""

                          +""

                          +""

                          +""

                          +""

                          +"";

            WebClient webClient = new WebClient();

            webClient.Encoding = System.Text.UTF8Encoding.UTF8;

            webClient.Headers[HttpRequestHeader.ContentType] = "text/xml; charset=utf-8";

            webClient.UploadStringAsync(url, "POST", cont);

            webClient.UploadStringCompleted += new UploadStringCompletedEventHandler(wc_UploadStringCompleted);

        }



        public class DS

        {

            public string Cname { get; set; }

            //public string Pinyin { get; set; }

           // public string Py { get; set; }

            public string Item { get; set; }

        }

        private IEnumerable citylist;

        private void wc_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)

        {

            StringReader stream = new StringReader(e.Result);

            XDocument xdoc = XDocument.Load(stream);

            citylist = from query in xdoc.Descendants("ds")

                          select new DS

                          {

                              Cname = (string)query.Element("cname"),

                              //Pinyin = (string)query.Element("pinyin"),

                              //Py = (string)query.Element("py"),

                              Item = (string)query.Element("item"),

                          };



            foreach (var item in citylist)

            {

                var d = item.Cname;

                //MessageBox.Show(d);

            }

            //this.listBox1.ItemsSource = citylist;



            //使用Linq来查询List数据 按照Content来进行分组

            var selected = from c in citylist group c by c.Item into n select new GroupingLayer(n);

            this.LongList.ItemsSource = selected;

        }



        //在所要获取item那项 添加点击事件

        private void TextBlock_Tap(object sender, System.Windows.Input.GestureEventArgs e)

        {

            cityname = (e.OriginalSource as TextBlock).Text;

            NavigationService.GoBack();

        }

    }

 

你可能感兴趣的:(windows phone)