Как получить доступ к списку из сети и показать список как элемент управления списком на устройстве - PullRequest
0 голосов
/ 26 ноября 2011

Я хочу создать элемент управления списком из файла csv / txt, который я разместил на своем сайте. Файл CSV / txt можно редактировать для добавления новых элементов (в строках), каждая строка имеет 4 столбца,

Этот файл должен быть загружен при первом запуске приложения и может быть обновлен позже.

Я хочу, чтобы список отображался следующим образом:

Заголовок (1-й столбец строки)
Подзаголовок- (2-я колонна строки)

И когда пользователь щелкает элемент списка, открывается страница, на которой отображаются все 4 элемента на этой отдельной странице. Я также хочу, чтобы этот список был доступен для поиска по первому пункту.

1 Ответ

0 голосов
/ 27 ноября 2011

Вам необходимо загрузить файл, проанализировать его, отобразить в виде списка, сделать отображаемые элементы списка активируемыми щелчками, чтобы вызвать переход к просмотру сведений о вашей коллекции и иметь окно поиска, верно?

  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 обратно в ноль, когда вы вернетесь туда, чтобы разрешить повторное нажатие того же элемента.

  5. Чтобы перейти на другую страницу со всеми подробностями - вы можете вызвать NavigationService.Navigate (new Uri (string.Format ("/ DetailsPage.xaml? Col1 = {0} & col2 = {1} & col3 = {2} & col4 = {3} ", Uri.EscapeUriString (((string []) (lb.SelectedItem)) [0]), ... [1,2,3]), UriKind.Relative), затем проанализируйте Uri в переопределении OnNavigatedTo класса DetailsPage.
  6. Чтобы разрешить поиск в ListBox, вы бы использовали объект CollectionViewSource в качестве ItemsSource для ListBox и позволяли пользователю вводить search запросов, которые обновляли бы фильтр, вызывая содержимое ListBox для обновления.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...