Warning: Cannot modify header information - headers already sent by (output started at /var/www/lalieno.it/index.php:48) in /var/www/lalieno.it/inc/cookie.php on line 3
a cadenza discontinua
Come se fossi
BLOG

[Visual Studio 2013 C# Windows Phone 8.1] - ListView come utilizzare gli ItemTemplate ed iterare fra i ListViewItem selezionati

In questa piccola guida pratica verifico come popolare un ListView usando un ItemTemplate da un ipotetico JSON e la sua successiva iterazione fra gli elementi. E' stato realizzato in C# per Windows Phone 8.1 .

 

In primis dichiariamo la ListView ed il relativo ItemTemplate nello XALM della Page.

        <ListView Grid.Row="1" Grid.ColumnSpan="2" x:Name="lvSpese" 
SelectionChanged="lvSpese_SelectionChanged"  SelectionMode="Single">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid Margin="2,0" Width="399">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="1*" />
                            <ColumnDefinition Width="2*" />
                            <ColumnDefinition Width="2*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="1*" />
                            <RowDefinition Height="1*" />
                        </Grid.RowDefinitions>

                        <TextBlock Grid.Column="0"  Grid.RowSpan="2" 
    						Text="{Binding Importo}"  
                            Foreground="{Binding ImportoColor}"
    						VerticalAlignment="Center" 
HorizontalAlignment="Center" FontSize="20"/>
                        <TextBlock Grid.Column="1"  Grid.Row="0"  
    						Text="{Binding Movimento}"   
    						VerticalAlignment="Center"/>
                        <TextBlock Grid.Column="1"  Grid.Row="1"  
    						Text="{Binding Conto}"   
    						VerticalAlignment="Center" />
                        <TextBlock Grid.Column="2"  Grid.Row="0"  
    						Text="{Binding Id}"
                            
    						VerticalAlignment="Center"/>
                        <TextBlock Grid.Column="2"  Grid.Row="1"  
    						Text="{Binding Data}"   
    						VerticalAlignment="Center"
                          />
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <VirtualizingStackPanel>
                        <VirtualizingStackPanel.ChildrenTransitions>
                            <TransitionCollection>
                                <ContentThemeTransition />
                            </TransitionCollection>
                        </VirtualizingStackPanel.ChildrenTransitions>
                    </VirtualizingStackPanel>
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
            <x:String>One</x:String>
        </ListView>

Nel cs dichiariamo la classe di appoggio per il binding dell'ItemTemplate

 
public class LvItemTemplate
        {
            public string Importo { get; set; }
            public string ImportoColor { get; set; }
            public string Movimento { get; set; }
            public string Id { get; set; }
            public string Data { get; set; }
            public string Conto { get; set; }
        }

Supponiamo di popolare la ListView da un ipotetico Json o da qualsiasi altra sorgente

for (int i = 0; i < subArray.Count; i++)
            {
                JsonObject jsonAppObj = subArray[i].GetObject();

                items.Add(new LvItemTemplate() {
                    Data = jsonAppObj.GetNamedString("data_movimento"),
                    Importo = jsonAppObj.GetNamedString("importo"),
                    ImportoColor = Decimal.Parse(jsonAppObj.GetNamedString("importo")) > 0 ? 
"#8BC34A" : "#F44336",
                    Conto = jsonAppObj.GetNamedString("conto"),
                    Movimento = jsonAppObj.GetNamedString("movimento"),
                    Id = jsonAppObj.GetNamedString("id")
                });
            }

Adesso iteriamo, per esempio dai selezionati effettuando il cas alla classe del template per ottenere i valori dell'item selezionato.

for (int i = 0; i < lvSpese.SelectedItems.Count; i++)
            {
                var tmpItem = lvSpese.SelectedItems[i] as LvItemTemplate;
                var id = tmpItem.Id;
            }

di GuiZ
25/11/2014

Commenta

We'll never share your email with anyone else.