2013-09-27 81 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 –