C# 中,兩個ScrollViewer嵌套在一起或者ScrollViewer里面嵌套一個ListBox、Listview(控件本身有scrollviewer)的時候,我們本想要的效果是鼠標(biāo)滾動整個ScrollViewer的內(nèi)容,但你會發(fā)現(xiàn)實(shí)際結(jié)果和你想像的不一樣,內(nèi)部有scrollviewer的內(nèi)容不會隨鼠標(biāo)的滾動而滾動,怎么辦呢?
解決辦法如下:
先截取外面的ScrollViewer的滾動事件,然后再重新讓外面的ScrollViewer觸發(fā)滾動事件就可以了
假設(shè)有2個控件,一個是Listbox(內(nèi)部名字是listbox),一個是ScrollViewer(外部),Listbox在ScrollViewer內(nèi)部的,并且ListBox的scroll滾動功能都禁用為Disabled,只啟用外部ScrollViewer的滾動功能,這時添加如下代碼,則能使ListBox中的內(nèi)容隨ScrollViewer的鼠標(biāo)滾動而滾動
listbox.PreviewMouseWheel+=(sender,e)
{
var eventArg = new MouseWheelEventArgs(e.MouseDevice,e.TimeDevice,e.Delta);
eventArg.RoutedEvent = UIElement.MouseWheelEvent;
eventArg.Source = sender;
this.listbox.RaiseEvent(eventArg);
};
更多信息請查看IT技術(shù)專欄