답변:
A ListView
는 기본적으로 a ListBox
와 비슷 하지만 그로부터 상속받습니다 View
. 이 속성을 사용하면 미리 정의 된 항목 표시 방법을 지정할 수 있습니다. BCL ( 기본 클래스 라이브러리 ) 에서 사전 정의 된 유일한보기는 자신 만의보기를GridView
쉽게 만들 수 있습니다 .
또 다른 차이점은 기본 선택 모드입니다 : 그것은 Single
A에 대한 ListBox
,하지만 Extended
A에 대한ListView
A는 ListView
당신이 세트 정의 할 수 views
그것을 위해 그리고 당신에게 기본 방법 (제공 WPF
binding
의 표시 제어 지원) ListView
정의를 사용하여을 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
MouseOver보기 : 위의보기 1 XAML
에서 위의 내용을 달성하려고하면 / / 에
ListBox
대해 더 많은 코드를 작성하게 될 것 입니다 .ControlTempalate
ItemTemplate
ListBox