Câu trả lời:
A ListView
về cơ bản giống như một ListBox
(và thừa hưởng từ nó), nhưng nó cũng có một View
tài sản. Thuộc tính này cho phép bạn chỉ định một cách hiển thị được xác định trước các mục. Khung nhìn duy nhất được xác định trước trong BCL ( Thư viện lớp cơ sở ) là GridView
, nhưng bạn có thể dễ dàng tạo khung nhìn của riêng mình .
Một sự khác biệt khác là chế độ lựa chọn mặc định: đó là Single
cho một ListBox
, nhưng Extended
cho mộtListView
A ListView
cho phép bạn xác định một bộ views
cho nó và cung cấp cho bạn một cách riêng ( WPF
binding
hỗ trợ) để điều khiển hiển thị ListView
bằng cách sử dụng được xác định views
.
Thí dụ:
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;
}
ĐẦU RA:
Chế độ xem bình thường: Xem 2 ở trên XAML
Chế độ xem MouseOver: Xem 1 ở trên XAML
Nếu bạn cố gắng đạt được ở trên trong một
ListBox
, có thể bạn sẽ viết được nhiều mã hơn choControlTempalate
/ItemTemplate
củaListBox
.
Listview xuất phát từ kiểm soát hộp danh sách. Một sự khác biệt quan trọng nhất là listview sử dụng chế độ lựa chọn mở rộng theo mặc định. listview cũng thêm một thuộc tính được gọi là chế độ xem cho phép bạn tùy chỉnh chế độ xem theo cách phong phú hơn so với bảng mục tùy chỉnh. Một ví dụ thực tế của listview với Gridview là chế độ xem chi tiết của trình khám phá tệp. Listview với chế độ xem lưới là một lưới dữ liệu ít mạnh mẽ hơn. Sau khi giới thiệu listview kiểm soát datagrid mất tầm quan trọng của nó.