日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

WPF 的Listbox 滚动处理

發布時間:2025/3/21 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WPF 的Listbox 滚动处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

操作需求場景:Listbox 高150? item 高150 listbox有幾十個item ,希望鼠標滾輪滾動一次listbox 能滾動到下一個item,

代碼實現:

<Grid x:Name="gd"><Grid.RowDefinitions><RowDefinition Height="158" /><RowDefinition /></Grid.RowDefinitions><Grid Grid.Row="0" Name="firstrowgrid"><ListBox ScrollViewer.PanningRatio="1" PreviewMouseWheel="waterfalllistbox_PreviewMouseWheel" ScrollViewer.ScrollChanged="waterfalllistbox_ScrollChanged" HorizontalAlignment="Stretch" ScrollViewer.CanContentScroll="False" SelectedIndex="{Binding Selectindex,Mode=TwoWay}" ScrollViewer.IsDeferredScrollingEnabled="False" SelectionChanged="waterfalllistbox_SelectionChanged" ScrollViewer.VerticalScrollBarVisibility="Visible" VirtualizingStackPanel.VirtualizationMode="Standard" VirtualizingStackPanel.IsVirtualizing="True" ItemsSource="{Binding WaterFallPoints2}" x:Name="waterfalllistbox"><ListBox.ItemTemplate><DataTemplate><Grid Height="150"><element:PtrRenderCompatible MouseDown="PtrRenderCompatible_MouseDown" Width="{Binding Width}" Height="150" PointItemsSource="{Binding DataPoints}" Brushes="{Binding BrushInfo}"/><TextBlock Text="{Binding StartTime}" Foreground="Blue" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="12"></TextBlock></Grid></DataTemplate></ListBox.ItemTemplate><ListBox.ItemsPanel><ItemsPanelTemplate><VirtualizingStackPanel Orientation="Vertical"></VirtualizingStackPanel></ItemsPanelTemplate></ListBox.ItemsPanel> </ListBox><Line x:Name="rline" MouseLeftButtonDown="rline_MouseLeftButtonDown" Visibility="Collapsed"></Line><Border Background="#ED9121" HorizontalAlignment="Right" VerticalAlignment="Top"><StackPanel Width="60" Height="50"><TextBlock TextAlignment="Center" Foreground="White" Text="選擇導聯:" Margin="0,2,0,2"></TextBlock><ComboBox ItemsSource="{Binding LeadList}" Mvc.Event="SelectionChanged" Mvc.Action="{Binding SelectLeadAction}" SelectedItem="{Binding WaterFallSelectedLead,Mode=TwoWay}"></ComboBox></StackPanel></Border></Grid>

  ui界面代碼如上,重點是重寫?waterfalllistbox_PreviewMouseWheel 鼠標滾輪事件

private void waterfalllistbox_PreviewMouseWheel(object sender, MouseWheelEventArgs e){ e.Handled = true;ScrollViewer obj = VisualHelper.FindChildren<ScrollViewer>(waterfalllistbox).First();Debug.WriteLine("ScrollableHeight:" + obj.ScrollableHeight);Debug.WriteLine("VerticalOffset:" + obj.VerticalOffset);Debug.WriteLine("ContentVerticalOffset:" + obj.ContentVerticalOffset);Debug.WriteLine("e.Delta:" + e.Delta);if (e.Delta < 0){obj.PageDown();//向下滾動}else{obj.PageUp();//} }

  注意:item 的高度是150,由于listboxitem 有默認的外邊距和內邊距,所以listbox 所在的行的高度為158

這樣的話 就能在豎向滑動的時候,可以一次滑動一個。

擴展:橫向滑動的時候??

ScrollViewer.PageLeft(), PageRight()
Listbox 鼠標滾動的時候默認調用的是 ScrollViewer.LineDown()各個方向的line 方法;
在鍵盤按住上下箭頭的時候默認調用pagedown 等各個方法。

(●'?'●) 打賞個包子也很贊奧

? ?




轉載于:https://www.cnblogs.com/gisbeginner/p/10005864.html

總結

以上是生活随笔為你收集整理的WPF 的Listbox 滚动处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。