【问题标题】:Silverlight ListBox does not scroll on mouse wheel movement on MacSilverlight ListBox 在 Mac 上的鼠标滚轮移动时不滚动
【发布时间】:2013-09-27 11:32:54
【问题描述】:

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

列表框 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>

【问题讨论】:

    标签: macos silverlight listbox scrollviewer mousewheel


    【解决方案1】:

    很抱歉成为坏消息的承担者:

    当前一些 Macintosh 鼠标设备具有物理或虚拟 鼠标滚轮。但是,Silverlight 上使用的程序访问层 Macintosh 不支持将鼠标滚轮事件转发到 Silverlight 在浏览器托管的情况下。你可以处理 来自 Macintosh 平台客户端的 Silverlight MouseWheel 事件,如果 Silverlight 应用程序在浏览器之外运行。否则,考虑 在 HTML DOM 中处理 Macintosh 平台的鼠标滚轮事件 等级;有关详细信息,请参阅平台依赖项。

    来自 MSDN Silverlight Differences on Windows and Macintosh

    好消息是您可以通过 JavaScript 监听 HTML 页面中的鼠标滚轮事件,并通过其JavaScript interop API 将这些事件传递给 Silverlight。另一个坏消息是我不知道有一种方法可以让它自动连接到应用程序中的 GUI 元素以让它们自动正常工作(就像你的情况下的滚动列表框)。据我所知,您必须手动收听,了解用户用鼠标悬停在哪个对象上,然后以编程方式滚动 GUI 组件。

    【讨论】:

    • 但是对于某些列表框来说它工作正常。在我的情况下,Listbox 2 在没有 HTML 桥的情况下工作正常
    • @Chris_vr:对不起,我误读了这个问题。尝试使列表框的背景不透明,并且在鼠标滚轮之前鼠标光标位于其内容的一些可见的物理部分上。
    • :我注意到它只适用于 safari。它在 Mac 中的 Firefox 上运行良好
    • @Chris_vr:我怀疑这只是 Silverlight 插件的可爱问题之一,可能与我发布的 MSDN 文章有关。我唯一的其他,抓住稻草的想法是尝试切换Windowless 模式设置。 (但同样,只是抓住稻草;我什至不确定它是否适用于 Mac+Safari)
    猜你喜欢
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多