ScrollViewer里有很多内容,其中有一个DataGrid 。DataGrid的垂直滚动条被设置为禁止出现,DataGrid也没用设置固定高度,这样当项添加的时候,其Height就会随着增加。现在,出现一个这样的问题:当DataGrid的项足够多,使得外层的ScrollViewer出现了垂直滚动条,但是鼠标放在DataGrid上滚动时,外层的ScrollViewer的滚动条不滚动。 |
|
50分 |
我看是这样
滚动的事件被DataGrid收到后,它没有处理,并且阻止了事件向上冒泡. 如果你要处理, 可以自己处理那个ScrollViewer的事件 PreviewMouseWheel在这里做滚动条事件处理 |
20分 |
1、系统自动处理,不需要知道。
2、你想什么条件下里面的滚动,什么条件下外面的滚动? |
里面的DataGrid的垂直滚动条被设置为禁止出现,所以,里面的DataGrid是一直都不希望滚动的。 |
|
15分 |
本身 你描述的都有问题。
什么叫 “当DataGrid的项足够多” 这难道不是它的高度达到和外层的ScrollViewer一样吗??你不设置 DataGrid的高度,它永远都不会出现滚动条。 还有DataGrid 做了咋么样的处理,你如果重写过它的样式,你就会知道,其它也内嵌ScrollViewer,不然它怎么滚动。 |
外层ScrollViewer的尺寸超过其容器的时候,就会出现滚动条。我不明白你说的是什么 |
|
10分 |
外层加ScrollViewer。为ScrollViewer设置高度和宽度。可自行设置横竖滚动条是否出现。一般设置为Auto
|
5分 |
设置 DataGrid的高度。 |
private void lstItem_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{ var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta); //指定路由事件对UIElement的事件类型 eventArg.RoutedEvent = UIElement.MouseWheelEvent; eventArg.Source = Parent; //指定路由事件的源对象 (Parent as UIElement).RaiseEvent(eventArg); } |