В чем разница между ListBox и ListView



в чем разница между ListBox WPF и ListView? Я не могу найти никакой существенной разницы в их свойствах. Есть ли другое типичное использование?

849   3  

3 ответов:

A ListView Это как ListBox (и наследует от него), но он также имеет View собственность. Это свойство позволяет указать предопределенный способ отображения элементов. Единственное предопределенное представление в BCL (Библиотека Базовых Классов) составляет GridView, но вы можете легко создать свой собственный.

еще одно отличие-это режим выбора по умолчанию: это Single на ListBox, а Extended на ListView

A ListView позвольте вам определить набор views за это и дает вам родной способом (WPFbinding поддержка) для управления отображением ListView С помощью defined views.

пример:

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

выход:

нормальный Вид: Вид 2 в выше XAML

Normal

вид наведения мыши: вид 1 в выше XAML

Mouse Over

если вы пытаетесь достичь выше в ListBox, вероятно, вы будете в конечном итоге писать гораздо больше кода дляControlTempalate/ItemTemplate на ListBox.

Listview является производным от элемента управления listbox. Одним из наиболее важных отличий является listview использует режим расширенного выбора по умолчанию . listview также добавляет свойство с именем view, которое позволяет настроить представление более богатым способом, чем пользовательская itemspanel. Одним из реальных примеров listview с gridview является представление сведений проводника. Listview с видом сетки-это менее мощная сетка данных. После введения DataGrid элемент управления ListView не утратила своего значения.

Comments

    Ничего не найдено.