Cuál es la diferencia entre ListBox y ListView


¿Cuál es la diferencia entre ListBox de WPF y ListView? No puedo encontrar ninguna diferencia significativa en sus propiedades. ¿Hay un uso típico diferente?

Author: drasto, 2011-01-16

3 answers

Un ListView es básicamente como un ListBox (y hereda de él), pero también tiene una propiedad View. Esta propiedad le permite especificar una forma predefinida de mostrar los elementos. La única vista predefinida en la BCL (Biblioteca de Clases Base) es GridView, pero puede fácilmente crear su propio.

Otra diferencia es el modo de selección predeterminado: es Single para un ListBox, pero Extended para un ListView

 177
Author: Thomas Levesque,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-25 01:34:57

A ListView le permite definir un conjunto de views para él y le da una forma nativa (WPF binding soporte) para controlar la visualización de ListView utilizando views definido.

Ejemplo:

XAML

<ListView ItemsSource="{Binding list}" Name="listv" MouseEnter="listv_MouseEnter" MouseLeave="listv_MouseLeave">
        <ListView.Resources>
            <GridView x:Key="one">
                <GridViewColumn Header="ID" >
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding id}" />
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn Header="Name" >
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding name}" />
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
            <GridView x:Key="two">                    
                <GridViewColumn Header="Name" >
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding name}" />
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.Resources>
        <ListView.Style>
            <Style TargetType="ListView">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ViewType}" Value="1">
                        <Setter Property="View" Value="{StaticResource one}" />
                    </DataTrigger>
                </Style.Triggers>
                <Setter Property="View" Value="{StaticResource two}" />
            </Style>
        </ListView.Style>  

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;
    }

PRODUCTO:

Vista normal: Vista 2 en la parte superior XAML

Normal

Vista sobre el Ratón: Ver 1 in arriba XAML

Pase el Ratón sobre

Si intenta lograr lo anterior en un ListBox, probablemente terminará escribiendo mucho más código paraControlTempalate/ItemTemplate de ListBox.

 16
Author: Kylo Ren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-07 09:05:20

Listview deriva del control listbox. Una diferencia más importante es que listview usa el modo de selección extendida por defecto . listview también agrega una propiedad llamada view que le permite personalizar la vista de una manera más rica que un itemspanel personalizado. Un ejemplo de la vida real de listview con gridview es la vista de detalles del explorador de archivos. Listview con vista de cuadrícula es una cuadrícula de datos menos potente. Después de la introducción de datagrid control listview perdió su importancia.

 4
Author: iaminvinicble,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-03 15:35:56