257 votes

Quelle est la différence entre ListBox et ListView

Quelle est la différence entre la ListBox et la ListView de WPF? Je ne trouve pas de différence significative dans leurs propriétés. Ont-ils des utilisations typiques différentes?

1 votes

Non mentionné dans les réponses: ListView a des en-têtes de colonnes, ListBox n'en a pas

269voto

Thomas Levesque Points 141081

Un ListView est essentiellement similaire à un ListBox (et en hérite), mais il a également une propriété View. Cette propriété vous permet de spécifier une façon prédéfinie d'afficher les éléments. La seule vue prédéfinie dans la BCL (Bibliothèque de classes de base) est GridView, mais vous pouvez facilement créer la vôtre.

Une autre différence est le mode de sélection par défaut : c'est Single pour un ListBox, mais Extended pour un ListView

48voto

Kylo Ren Points 4943

Un ListView vous permet de définir un ensemble de vues pour celui-ci et vous donne un moyen natif (prise en charge de WPF binding) pour contrôler l'affichage du ListView en utilisant les vues définies.

Exemple:

XAML

                <Style.Triggers>
                    <DataTrigger Binding="{Binding ViewType}" Value="1">
                        <Setter Property="View" Value="{StaticResource one}" />
                    </DataTrigger>
                </Style.Triggers>
                <Setter Property="View" Value="{StaticResource two}" />

Code Behind:

private int viewType;

public int ViewType
{
    get { return viewType; }
    set 
    { 
        viewType = value;
        UpdateProperty("ViewType");
    }
}        

private void listv_MouseEnter(object sender, MouseEventArgs e)
{
    ViewType = 1;
}

private void listv_MouseLeave(object sender, MouseEventArgs e)
{
    ViewType = 2;
}

OUTPUT:

Vue normale: Vue 2 dans le XAML ci-dessus

Normal

Vue au survol de la souris: Vue 1 dans le XAML ci-dessus

Mouse Over

Si vous essayez de réaliser ce qui précède dans un ListBox, vous finirez probablement par écrire beaucoup plus de code pour ControlTemplate/ItemTemplate de ListBox.

0 votes

La section Code Behind n'est pas valide en tant que code au 2019-04-29 (bracelet fermant supplémentaire et UpgradeProperty). Peut-il être corrigé?

2 votes

C'est déjà correct. UpdateProperty est une méthode pour notifier les changements de propriété. Cela peut être totalement différent pour vous. Utilisez la méthode que vous utilisez pour notifier les changements de propriété. et quel crochet supplémentaire?

0 votes

Eh bien merci pour l'explication. Et tu as raison. Je suppose que j'ai été fasciné par l'emplacement des accolades. Il n'y a en effet pas de parenthèses supplémentaires. Je vais néanmoins modifier un peu le code si tu es d'accord.

16voto

iaminvinicble Points 324

ListView dérive du contrôle de ListBox. Une des différences les plus importantes est que ListView utilise le mode de sélection étendue par défaut. ListView ajoute également une propriété appelée view qui vous permet de personnaliser la vue de manière plus riche qu'un itemspanel personnalisé. Un exemple concret de ListView avec GridView est la vue détaillée de l'explorateur de fichiers. ListView avec GridView est une grille de données moins puissante. Après l'introduction du contrôle DataGrid, ListView a perdu de son importance.

0 votes

La moitié est trivial et l'autre moitié est votre opinion personnelle

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X