c# windows-phone-8 grid windows-phone longlistselector

c# - Cómo llenar LongListSelector



windows-phone-8 grid (1)

Estoy comenzando con el desarrollo de C # Windows Phone 8 y estoy intentando escribir una aplicación que use un LongListSelector. La aplicación mostrará una larga lista de nombres de estaciones de tren.

He estado viendo algunas de las muestras en línea, incluidas las muestras MSDN PeopleHub y PhotoHub, pero parecen muy complejas. Tomé la muestra de PeopleHub y la pirateé un poco hasta que logré mostrar una lista de estaciones en un LongListSelector, pero no pude averiguar qué elemento se había seleccionado en la lista. La propiedad SelectedItem simplemente devolvía el nombre de la aplicación cuando se pasaba a otra página y no el elemento que se había seleccionado en la lista.

Creo que necesito un ejemplo básico de cómo agregar algunos elementos a un LongListSelector y luego encontrar y pasar el elemento seleccionado a otra página. No entiendo completamente cómo funciona el control, si tiene que usar algún tipo de enlace de datos con el LongListSelector para rellenarlo o si es algo más simple como:

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

etc

¿Puede alguien darme algunos consejos básicos simples sobre cómo poblar este control y descubrir qué elemento selecciona el usuario? Cuando digo qué elemento seleccionan, cuando aparece la grilla de LongListSelector, hacen clic en A, por ejemplo, y luego muestra una lista de cosas que comienzan con A y luego hacen clic en trainstationA. Me gustaría poder detectarlas. He elegido trainstationA y paso esa información a otra página para que pueda mostrar más información al respecto.

Lo siento si esto parece básico, soy bastante nuevo en esto.

¡Gracias!


Aquí hay un ejemplo básico que debería ayudarlo a comprender: primero, en su página (archivo xaml) define el control 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>

También declaras cómo se verán sus elementos. Puede ser cualquier UIElement: un botón, Imagen, Cuadrícula, etc. En el código anterior, declaré que mi artículo sería un bloque de texto cuyo contenido (texto) he vinculado a una propiedad ''Nombre''. También le he dado un nombre a LLS, que puedo consultar más adelante.

En el código Page.cs, usted llena el LLS. Permite crear la clase de estación simple y llenar 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")); } }

Lo que es importante:

  • mira que en mi clase Station hay una propiedad llamada ''Name'' - esa es la que está vinculada al contenido de TextBlock.
  • Creé ObservableCollection, que es una colección de mis estaciones, es similar a una lista, pero cuando se agrega o quita el nuevo elemento, se genera el evento PropertyChanged y, por lo tanto, su LongListSelector puede actualizarse automáticamente cuando agrega una nueva estación.
  • He asignado la colección creada a myLLS.ItemsSource: significa que el LLS creado se completará con elementos (que se describen en xaml como DataTemplate) y una fuente de estos elementos es esa colección.

Espero que esto ayude. Feliz codificación.