primera phone logo lanzamiento funciones características caracteristicas windows-phone-7 windows-phone-7.1 windows-phone windows-phone-8

windows phone 7 - phone - Databinding+Dynamic Pivot



windows phone caracteristicas (1)

Algunas cosas aquí. Primero, para que su enlace funcione, deberá usar propiedades en lugar de campos.

public class Menu { public string Name {get;set;} public List<Dish> Dishes_1 { get; set; } public List<Dish> Dishes_2 { get; set; } public List<Dish> Dishes_3 { get; set; } } public class Dish { public string Description { get; set; } public string Price { get; set; } }

A continuación, en lugar de su ciclo foreach para agregar los elementos al pivote, simplemente configure la fuente de los elementos:

Mainpivot.ItemsSource = List_Menus;

Por cierto, realmente deberías estudiar el aprendizaje de MVVM. Vale la pena el tiempo

Tengo problemas para agregar dinámicamente un PivotItem a un Pivote con plantilla y con datos.

Las clases en uso (un poco simplificadas para mantenerlo rápidamente comprensible);

class Menu { string Name List<Dish> Dishes_1; List<Dish> Dishes_2; List<Dish> Dishes_3; } class Dish { string Description string Price; }

Quiero usar un Pivot para mostrar una lista de Menu-Objects. Creo PivotItems de forma dinámica en función del número de elementos en esa lista. Cada PivotElement debería seguir el mismo diseño y comportarse igual. La plantilla de disposición y enlace de datos se realiza en .xaml como se muestra a continuación;

<phone:Pivot x:Name="Mainpivot"> <phone:Pivot.HeaderTemplate> <DataTemplate> <TextBlock Text="{Binding Name}" /> </DataTemplate> </phone:Pivot.HeaderTemplate> <phone:Pivot.ItemTemplate> <DataTemplate> <ListBox> <TextBlock Text="Dishes_1"/> <ListBox ItemsSource="{Binding Dishes_1}"> <ListBox.ItemTemplate> <DataTemplate> <Grid> <TextBlock Text="{Binding Description}"/> <TextBlock Text="{Binding Price}"/> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox> // ... // this is repeated 3 times; //a textblock and listbox per List<Dishes> in the Menu-class </ListBox> </DataTemplate> </phone:Pivot.ItemTemplate> </phone:Pivot>

Completo el archivo Pivot in de .cs con lo siguiente:

foreach (Menu m in List_Menus) { PivotItem p = new PivotItem(); p.DataContext = m; Mainpivot.Items.Add(p); }

Cuando configuro el DataContext como un objeto de menú, el enlace de datos (a través de xaml) no debería requerir más código aquí (¿así que creo?).

El problema ahora es; no funciona ...

Al mirar con el depurador, parece que el PivotItem creado no se comporta como la plantilla definida en Mainpivot dice (o eso creo). Al mirar a Mainpivot, se muestra que se han agregado PivotItems, pero eso es todo, creo que solo son PivotItems vacíos completamente nulos. Cuando se ejecuta en el emulador, solo muestra un Pivote vacío.

¿Alguna idea?

// PD: No uso ViewModels, ya que los considero bastante confusos (como principiantes) como concepto. Aunque no creo que eso tenga algo que ver con el problema.