2013-09-27 38 views
1

我有基于Silverlight的web应用程序在哪里。我发现ListBox不会滚动鼠标滚轮。我可以通过点击垂直滚动条来滚动。当我使用鼠标滚轮或双指滚动时,它不起作用。 这里在鼠标滚轮在列表框2中工作正常,但列表框1不工作。Silverlight ListBox不滚动鼠标滚轮在Mac上运行

列表框1

<Border CornerRadius="6,6,0,0" Grid.Row="1" Margin="2,5,2,0" BorderThickness="1,1,1,0" BorderBrush="#FFC4C4C4"> 
<Grid> 
     <ListBox x:Name="filterListBox" Grid.Row="0" Grid.Column="1" Background="Transparent" SelectedIndex="{Binding SelectedFilterIndex, Mode=TwoWay}" SelectedItem="{Binding SelectedFilterItem, Mode=TwoWay}" SelectionChanged="ListBox_SelectionChanged" BorderThickness="0" VerticalAlignment="Center" Margin="5,3" ItemContainerStyle="{StaticResource FilterListBoxItemStyle}"> 
        <i:Interaction.Triggers> 
         <i:EventTrigger EventName="SelectionChanged"> 
          <ei:CallMethodAction TargetObject="{Binding}" MethodName="FilterSelectionChanged"/> 
         </i:EventTrigger> 
        </i:Interaction.Triggers> 
        <ListBox.ItemsPanel> 
         <ItemsPanelTemplate> 
          <StackPanel Orientation="Horizontal"/> 
         </ItemsPanelTemplate> 
        </ListBox.ItemsPanel> 
        <ListBoxItem Padding="7,2" VerticalContentAlignment="Center" Tag="Popular" Visibility="{Binding Path=IsPopularChannelTab, Mode=TwoWay, Converter={StaticResource BoolToVisibilityConverter}}"> 
          <TextBlock Text="{Binding Path=PopularChannelsText, Source={StaticResource PageStrings}}" FontSize="13" FontWeight="SemiBold" FontFamily="Arial" VerticalAlignment="Center" /> 
         </ListBoxItem> 
        <ListBoxItem IsEnabled="False" VerticalContentAlignment="Center" Visibility="{Binding Path=IsPopularChannelTab, Mode=TwoWay, Converter={StaticResource BoolToVisibilityConverter}}"> 
          <StackPanel Orientation="Horizontal"> 
           <Border BorderBrush="#FFBDBDBD" BorderThickness="0,2,2,2" HorizontalAlignment="Center" VerticalAlignment="Center" Height="20"/> 
           <Border BorderBrush="#FFF8F8F8" BorderThickness="0,2,2,2" HorizontalAlignment="Center" VerticalAlignment="Center" Height="20"/> 
          </StackPanel> 
         </ListBoxItem> 
        <ListBoxItem Padding="7,2" VerticalContentAlignment="Center" Tag="All"> 
         <TextBlock Text="{Binding Path=AllChannelsText, Source={StaticResource PageStrings}}" FontSize="12" FontWeight="SemiBold" FontFamily="Arial" VerticalAlignment="Center"/> 
        </ListBoxItem> 
        <ListBoxItem IsEnabled="False" VerticalContentAlignment="Center"> 
         <StackPanel Orientation="Horizontal"> 
          <Border BorderBrush="#FFBDBDBD" BorderThickness="0,2,2,2" HorizontalAlignment="Center" VerticalAlignment="Center" Height="20"/> 
          <Border BorderBrush="#FFF8F8F8" BorderThickness="0,2,2,2" HorizontalAlignment="Center" VerticalAlignment="Center" Height="20"/> 
         </StackPanel> 
        </ListBoxItem> 
        <ListBoxItem Padding="7,2" VerticalContentAlignment="Center" Tag="Favorites"> 
         <TextBlock Text="{Binding Path=FavoritesText, Source={StaticResource PageStrings}}" FontSize="13" FontWeight="SemiBold" FontFamily="Arial" VerticalAlignment="Center"/> 
        </ListBoxItem> 

       </ListBox> 
</Grid> 
</Border>    

列表框2

<Grid Visibility="{Binding Path=IsHavingProvider, Converter={StaticResource BoolToVisibilityConverter}}" Margin="0,20,0,0" Grid.Row="4"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="18"/> 
        <RowDefinition Height="auto"/> 
       </Grid.RowDefinitions> 

       <core:MagicTextBlock Grid.Row="0" TextBlockStyle="{StaticResource TextBlock_Style}" Text="{Binding Path=Activity, Source={StaticResource PageStrings}}" /> 

       <ListBox Margin="0,10,0,0" Grid.Row="1" x:Name="Provider" Width="480" Height="195" HorizontalAlignment="Left" ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
        ItemsSource="{Binding Providers,Mode=TwoWay}" 
        SelectedItem="{Binding SelectedProvider,Mode=TwoWay}" 
        ItemContainerStyle="{StaticResource Table_ListBoxItem_Style}" 
        DisplayMemberPath="name"> 
       </ListBox> 
      </Grid> 

回答

0

对不起,是坏消息:

用于Macintosh一些当前的鼠标设备具有一个物理或虚拟 月使用轮子。但是,Silverlight在 Macintosh上使用的程序访问层不支持在浏览器托管的情况下将鼠标滚轮事件转发到 Silverlight。如果 Silverlight应用程序运行在浏览器外,您可以从Macintosh平台客户端处理 Silverlight MouseWheel事件。否则,请考虑 在HTML DOM 级别处理Macintosh平台的鼠标滚轮事件;有关更多信息,请参阅平台相关性。

来自MSDN Silverlight Differences on Windows and Macintosh

好消息是,您可以通过JavaScript在HTML页面中收听mousewheel事件,并通过JavaScript interop API将这些事件传递到Silverlight。另外一个坏消息是我不知道如何让它自动连接到你的应用程序中的GUI元素,让它们自动运行只是工作(就像你的案例中的滚动列表框)。据我所知,你必须手动收听,用鼠标悬停在哪个对象上,然后以编程方式滚动GUI组件。

+0

但对于某些列表框它工作正常。在我的情况下,列表框2没有HTML桥工作正常 –

+0

@Chris_vr:对不起,我的错误误解了这个问题。尝试将列表框的背景设置为不透明,并且鼠标光标在鼠标移动之前会覆盖其内容的某些可见物理片段。 –

+0

:我注意到它只与safari.It工作正常与Mac中的Firefox –