1

我有一个滚动条,当我站在上面时,它滚动得很好,但是如果我站在堆栈面板内的内容上(用滚动查看器包裹),滚动条不起作用,为什么?

<ScrollViewer Grid.Column="0" VerticalScrollMode="Enabled" VerticalScrollBarVisibility="Auto">
    <StackPanel Orientation="Vertical">
        <TextBlock Text="Participants" />
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
            <TextBlock Text="{Binding Path=Users.Count}" />
            <TextBlock Text="/" />
            <TextBlock Text="{Binding MaxParticipants}" />
        </StackPanel>
        <ListView ItemsSource="{Binding Users}" Tapped="User_Tapped">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ListViewItem IsHitTestVisible="False">
                        <StackPanel>
                            <facebookControls:ProfilePicture ProfileId="{Binding FacebookId}" />
                            <TextBlock Text="{Binding UserName}" />
                        </StackPanel>
                    </ListViewItem>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackPanel>
</ScrollViewer>
4

1 回答 1

2

问题是 ListView 有它自己的滚动查看器,因此当您在 ListView 上滚动时,ListView 滚动查看器会获取滚动事件。
如果您不需要项目选择,那么最简单的方法就是将 ListView 替换为 ItemsControl。
如果您需要项目选择,那么您只需从 ListView 的样式中删除 ScrollViewer。这是一个没有滚动查看器的 ListView 样式:

<Style x:Key="ListViewStyle1" TargetType="ListView">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ListView">
                <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
                    <ItemsPresenter HeaderTemplate="{TemplateBinding HeaderTemplate}" Header="{TemplateBinding Header}" HeaderTransitions="{TemplateBinding HeaderTransitions}" Padding="{TemplateBinding Padding}"/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

此外,如果您使用 ListView,则不应Tapped="User_Tapped"在用户被点击时使用来获取事件,而应设置 IsItemClickEnabled="True"并使用 ItemClicked 事件

于 2013-09-10T11:45:00.713 回答