ItemsControl和ListView、ListBox的區別

孤沉發表於2024-03-08

1、ItemsControl用來顯示一個資料項的集合,它的底層是一個列表,它可以非常靈活的展示佈局和資料
以下是例子

<ItemsControl ItemsSource="{Binding Student}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
		    <TextBlock Text="{Binding Id}" />
			<TextBlock Text="{Binding Name}" />
			<TextBlock Text="{Binding Age}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

2、ListBox是ItemsControl的子類,所以看原始碼
image
它多了選擇,查詢,取消的功能,
用法

<ListBox
  Width="180"
  HorizontalAlignment="Center"
  Background="Honeydew"
  ItemsSource="{Binding Source={StaticResource HeaderList}}" />

3、ListView是最新出來的,它是ListBox的子類,看原始碼
image
而ListView裡面多了ViewBase
image
ViewBase的父類是DependencyObject
所以,對於每一項的繪製,排序,分組都可以設定不同的型別,更加的靈活。
用法

 <ListView
   Width="180"
   HorizontalAlignment="Center"
   Background="Honeydew"
   ItemsSource="{Binding Source={StaticResource HeaderList}}" />

相關文章