2011-01-29 12 views
5

Estoy desarrollando una aplicación que tiene un número dinámico de elementos Panorama, ahora actualmente estos se agregan agregando una lista de ellos al Panorama mediante su propiedad 'ItemsSource'.Cómo agregar elementos mediante programación a un artículo PanoramaItem en WP7

Pero el problema surge cuando intento agregar cosas a los artículos PanoramaItems creados. Ahora, puedo agregar un ListBox, y eso funciona como se esperaba, pero realmente me gustaría agregar algo sobre lo que tenga un poco más de control (posiblemente algún tipo de control personalizado).

Ahora, he encontrado algunos buenos lugares que me muestran cómo hacerlo editando MainPage.xaml, pero como no sé cuántos de ellos necesito, no puedo (creo) hacerlo como ese.

El problema se agrega al hecho de que la clase PanoramaItem no tiene una propiedad 'Artículos', solo una propiedad 'Contenido' (que es lo que creo que necesito).

Creo que necesito para definir un archivo .xaml/Cs para el control personalizado y entonces de alguna manera que aplique a la PanoramaItem pero realmente no estoy seguro

Respuesta

3

voy a suponer aquí que usted' Estoy usando un marco MVVM aquí, entonces si no, me disculpo.

Tiene razón al pensar que probablemente desee utilizar un control de usuario para los elementos Pano. Una vez que tenga que ir aquí es el nuevo código XAML:

<controls:Panorama ItemsSource="{Binding PanoViewModels}"> 
    <controls:Panorama.ItemTemplate> 
      <DataTemplate> 
       <ctl:PanoItemControl /> 
      </DataTemplate> 
    </controls:Panorama.ItemTemplate> 
</controls:Panorama> 

obviamente esto se simplifica, sino que debe transmitir la idea de. En su control, puede enlazar directamente a objetos contenidos dentro de PanoViewModels.

+0

trabaja un convite, gracias! –

2

Si está haciendo MVVM y enlace de datos, entonces la respuesta de Barranger Ridler se ve bien.

Si desea escribir código personalizado C# para cada elemento secundario, debe colocar un contenedor (por ejemplo, una Cuadrícula o un panel Stack) en el contenido de cada elemento PanoramaItem y luego Agregar a los niños de ese contenedor. No tengo el código C# a mano, pero aquí está el código de ironruby: agrega 5 TextBlocks a StackPanel y luego establece StackPanel como el contenido de PanoramaItem. Debería ser bastante fácil de atravesar.

stack_panel = StackPanel.new 

for i in 1..5 
    t = TextBlock.new 
    t.font_size = i*24 
    t.text = "Line " << i.to_s 
    s.children.add t 
end 

pi = PanoramaItem.new 
pi.header = "Title" 
pi.content = stack_panel 

panorama.items.add pi 

basado en el código http://script.iron7.com/#/Script/Detail?scriptId=ed9e4e216a474432a9e88523b201965d&userLowerCaseName=stuart

Cuestiones relacionadas