伸出設置ScrollViewer
CanContentScroll
到True
的附加屬性在ListView
,以確保該ScrollViewer
物理單元爲單位滾動不符合邏輯的人(有在ListView
視見例如顯示沒有半項),然後處理ScrollChanged
事件獲得單元的每個時間偏移:
<ListView ScrollViewer.CanContentScroll="True" x:Name="Lv" ScrollViewer.ScrollChanged="Lv_OnScrollChanged" Height="100">
<ListBoxItem Height="50"
Content="Item 1" />
<ListBoxItem Height="50"
Content="Item 2" />
<ListBoxItem Height="50"
Content="Item 3" />
<ListBoxItem Height="50"
Content="Item 4" />
<ListBoxItem Height="50"
Content="Item 5" />
<ListBoxItem Height="50"
Content="Item 6" />
<ListBoxItem Height="50"
Content="Item 7" />
</ListView>
確保ListView
高度(或寬度,如果你想使用水平的ListView)必須是一個ListViewItem高度的乘數(以上* 100 = x * 50,x∈* *)。
private void Lv_OnScrollChanged(object sender, ScrollChangedEventArgs e)
{
var verticalOffet=e.VerticalOffset;
//the visible items are the items number from verticalOffet until verticalOffet+(ListView Heigh/ListViewItem Height)
}
例如,如果事件被觸發,verticalOffet是,然後在ListView
視口中可見的項目有3項:
可見ListViewItems
是從事件處理程序的VerticalOffset
推導,第4項。