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();
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值