none
Cambiare in funzione della posizione item (pari o dispari) l'immagine in una ListBox RRS feed

  • Domanda

  • buongiorno a tutti,

    in una listbox WPF vorrei che l'item pari abbia una determinata immagine e l'item dispari una differente.

    Qualcuno mi può suggerire come implementare il codice XAML per ottenere questo comportamento ?

    Preciso inoltre che il mio programma ha la funzionalità UP e DOWN che consente di spostare un item della listbox selezionato. Le immagini negli item dovranno variare sempre in funzione del pari o dispari.

    <ListBox Grid.Column="0" Grid.Row="1" Name="lbParams" BorderBrush="White" ItemsSource="{Binding ConfigParams}" SelectedItem="{Binding SelectedParam}" Background="Transparent" BorderThickness="0" AlternationCount="2">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <DataTemplate.Triggers>
                            <Trigger Property="ItemsControl.AlternationIndex" Value="0">
                                <Setter Property="DockPanel.Dock" TargetName="rowImage" Value="Left" />
                            </Trigger>
                            <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                                <Setter Property="DockPanel.Dock" TargetName="rowImage" Value="Right" />
                            </Trigger>   
                        </DataTemplate.Triggers>
                        <DockPanel>
                            <Image Source="Images/Param.png" DockPanel.Dock="Left" x:Name="rowImage"/>
                            <TextBlock Text="{Binding Name}" VerticalAlignment="Center"/>
                        </DockPanel>

                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

    ho provato cosi ma sembra che il trigger non funzioni. Cosa sbaglio ?

    Stefano


    lunedì 15 luglio 2019 09:31

Tutte le risposte

  • Se dovessi farlo io, farei la seguente cosa:

    nella classe che fa da "riga" nella Listbox, aggiungerei una property Boolean calcolata che vale 1 o 0 in base al fatto che la riga sia pari o dispari. (presumo tu abbia un ID numerico della riga o l'indice nella collection).

    Poi creerei un converter che converte il boolean in una immagine in base al suo valore e inserirei il campo immagine in binding al campo boolean con il converter che gestisce la Source dell'immagine.

    Puoi prendere ispirazione da Questo articolo dove faccio una cosa simile con una enumerazione.

    http://www.sabrinacosolo.com/datagrid-wpf-standard-un-caso-duso-reale-parte-4/

    saluti


    Sabrina C. - http://www.dotnetwork.it

    martedì 16 luglio 2019 09:38