2013-11-17 2 views
3

Я начинаю с разработки C# Windows Phone 8, и я пытаюсь написать приложение, которое использует LongListSelector. Приложение покажет длинный список имен вокзалов.Как заполнить LongListSelector

Я изучал некоторые образцы онлайн, включая образцы MSDN PeopleHub и PhotoHub, но они кажутся очень сложными. Я взял образец PeopleHub и немного взломал его, пока не получил его, чтобы отобразить список станций в LongListSelector, но я не смог узнать, какой элемент был выбран в списке. Свойство SelectedItem просто возвращало имя приложения при передаче на другую страницу, а не тот элемент, который был выбран в списке.

Мне кажется, мне нужен базовый пример того, как добавить некоторые элементы в LongListSelector, а затем найти и передать выбранный элемент на другую страницу. Я не в полной мере понять, как контрольные работы, если вы должны использовать какой-то DataBinding с LongListSelector для его заполнения или является ли это чем-то проще, как:

LongListSelectorThing.add("trainstationA"); 
LongListSelectorThing.add("trainstationB"); 
LongListSelectorThing.add("trainstationC"); 

и т.д.

Может кто-то дать мне некоторые простые базовые указатели относительно того, как заполнить этот элемент управления и выяснить, какой элемент пользователь выбирает? Когда я говорю, какой элемент они выбирают, когда появляется сетка LongListSelector, они нажимают на A, например, а затем отображает список вещей, начинающихся с A, и затем они нажимают на trainstationA, я хочу, чтобы они могли обнаружить, ve выбрал trainstationA и передал эту информацию на другую страницу, чтобы я мог отобразить дополнительную информацию об этом.

Извините, если это кажется основным, я совершенно новичок в этом.

Спасибо!

ответ

12

Вот простой пример, который поможет вам понять: Первые в вашей странице XAML (файлы) можно определить управляющую LongListSelector (LLS):

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
    <phone:LongListSelector Name="myLLS" Margin="0"> 
     <phone:LongListSelector.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding Name}"/> 
      </DataTemplate> 
     </phone:LongListSelector.ItemTemplate> 
    </phone:LongListSelector> 
</Grid> 

Вы также заявить, как его деталь будет выглядеть. Это может быть любой UIElement - кнопка, изображение, сетка и т. Д. В приведенном выше коде я объявил, что мой Item будет TextBlock, содержимое которого (текст) я привязал к свойству «Имя». Я также дал LLS имя, которое я могу сослаться на него позже.

В коде Page.cs вы заполняете LLS. Позволяет создать простой класс станции и заполнить LLS:

public class Station 
{ 
    private string _stationName; 

    public string Name 
    { 
    get { return _stationName; } 
    set { _stationName = value; } 
    } 

    public Station(string station) 
    { 
    this.Name = station; 
    } 
} 

public partial class MainPage : PhoneApplicationPage 
{ 
    ObservableCollection<Station> trainStations = new ObservableCollection<Station>(); 

    public MainPage() 
    { 
    InitializeComponent(); 

    myLLS.ItemsSource = trainStations; 

    trainStations.Add(new Station("Germany")); 
    trainStations.Add(new Station("France")); 
    trainStations.Add(new Station("Italy")); 
    } 
} 

Что важно:

  • посмотреть, что в моем классе станции есть свойство, называемое «Name» - это тот, к которому содержание TextBlock связан.
  • Я создал ObservableCollection, который представляет собой коллекцию моих станций - это похоже на список, но когда новый элемент добавлен или удален, событие PropertyChanged повышается, и поэтому ваш LongListSelector может автоматически обновляться при добавлении новой станции.
  • Я назначил созданную коллекцию myLLS.ItemsSource - это означает, что созданные LLS будут заполнены элементами (описанными в xaml как DataTemplate), а источником этих элементов является эта коллекция.

Надеюсь, это поможет. Счастливое кодирование.

+0

Спасибо. Однако я нашел несколько строк кода, которые позволяют мне заполнить базовый longlistselector, но я не знаю, как сгруппировать материал в jumplist (где он группирует материал по первой букве имени и т. Д., Аналогично ваша адресная книга в телефоне). Я добавил список станций в список allStations = новый Список (); Я тогда просто использовал completeStationList.ItemsSource = allStations; Это добавляет все станции в список, но мне нужно, чтобы они были сгруппированы по первой букве первого слова. Есть ли простой способ сделать это? – irldev

+0

Ваши данные должны быть сгруппированы с использованием ключа, и эти группы привязаны к LLS. Здесь у вас есть хорошее описание, как это сделать: http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj244365(v=vs.105).aspx и вот еще один рабочий пример: http : //code.msdn.microsoft.com/wpapps/PeopleHub-Windows-Phone-80-88abe94d – Romasz

Смежные вопросы