当我在Silverlight 4中使用以下xaml时,ScrollViewer将无法识别鼠标滚轮,除非我在滚动条拇指上单击一次,并将鼠标悬停在滚动条上,同时转动鼠标滚轮。
<Grid x:Name="LayoutRoot" Background="White">
<ScrollViewer>
<StackPanel Name="stackPanel1">
<Button Content="Button 1" Width="150" />
<Button Content="Button 2" Width="150" Margin="0,20,0,0" />
<Button Content="Button 3" Width="150" Margin="0,20,0,0" />
<Button Content="Button 4" Width="150" Margin="0,20,0,0" />
<Button Content="Button 5" Width="150" Margin="0,20,0,0" />
<Button Content="Button 6" Width="150" Margin="0,20,0,0" />
<Button Content="Button 7" Width="150" Margin="0,20,0,0" />
</StackPanel>
</ScrollViewer>
</Grid>
有没有其他人经历过这种情况,是否有任何解决方法?
答案 0 :(得分:17)
此处的分辨率似乎是在ScrollViewer上设置背景画笔。在我的情况下,我选择使用透明刷。它似乎与命中测试有关,因此没有画笔的控件永远不会收到任何鼠标事件。
<ScrollViewer Background="Transparent">
答案 1 :(得分:0)
从此处http://silverlight.codeplex.com/
安装Silverlight工具包添加对 System.Windows.Controls.Navigation 和 System.Windows.Controls.Toolkit dll
的引用修改代码,将导航名称空间添加到UserControl标记,如下所示
<UserControl x:Class="SilverlightApplication1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
将StackPanel包裹在帧标签中,如此
<ScrollViewer x:Name="SV" >
<navigation:Frame>
<StackPanel Name="stackPanel1">
<Button Content="Button 1" Width="150" />
在后面的代码中,添加以下行
public MainPage()
{
InitializeComponent();
SV.SetIsMouseWheelScrollingEnabled(true);
参考:http://diptimayapatra.wordpress.com/2009/12/08/mouse-wheel-scroll-for-scrollviewer-in-silverlight-3/