如何从网络访问列表并将列表显示为设备上的列表控件

时间:2011-11-26 18:34:15

标签: c# windows-phone-7 windows-phone-7.1

我想从我在我的网站上托管的csv / txt文件创建列表控件,可以编辑CSV / txt以添加新项目(按行)每行有4个颜色,

应在应用程序运行时首次下载此文件,以后可以更新。

我希望列表的功能如下:

标题 - (第1行)# 副标题 - (第2行)

当用户点击列表项时,会打开一个页面,显示该单独页面中的所有4个项目。我还希望该列表能够在第1项中进行搜索。

1 个答案:

答案 0 :(得分:0)

您需要下载文件,解析文件,显示为列表,通过点击触发导航到收藏项目的详细信息视图,使显示的列表项可点击,并有一个搜索框,对吗?

  1. 要下载文件,您可以使用WebClient.DownloadStringAsync
  2. 要解析它 - 你可以使用string.Split('\ n')和string.Split(',')
  3. 要显示为列表 - 您可以将表示csv文件行的已解析对象放在集合中 - 如List,然后使用ListBox控件并将其ItemsSource设置为该列表。此外,您需要定义ItemTemplate以在两列中显示字符串,例如

    <ListBox.ItemTemplate>
        <DataTemplate>
            <!-- The DataContext here is a string array, so binding to [i] will bind to its string at position i -->
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding [0]}" Width="240" TextWrapping="Wrap"/>
                <TextBlock Text="{Binding [1]}" Width="240" TextWrapping="Wrap"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
    
  4. 要处理点击 - 最好的方法是使用带有命令绑定的按钮,但简单的解决方案也可以正常工作 - 您只需处理ListBox.SelectionChanged事件,而SelectedItem就是被点击的内容 - 您必须覆盖OnNavigated在您的页面中,当您向后导航以允许再次单击相同的项目时,将ListBox.SelectedItem设置为null。

  5. 要导航到包含所有详细信息的其他页面,您可以调用NavigationService.Navigate(new Uri(string.Format(“/ DetailsPage.xaml?col1 = {0}&amp; col2 = {1}&amp; col3 = { 2}&amp; col4 = {3}“,Uri.EscapeUriString(((string [])(lb.SelectedItem))[0]),... [1,2,3]),UriKind.Relative),然后解析OnNavigated中的UriTo覆盖DetailsPage类。
  6. 要允许在ListBox中进行搜索,您可以使用CollectionViewSource对象作为ListBox的ItemsSource,并允许用户输入将更新Filter的search个查询,从而刷新ListBox的内容