我有一个滚动条,当我站在它上面时,滚动得很好,但是如果我站在堆叠面板内的内容(用滚动查看器包裹),滚动条不起作用,为什么?
<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>
答案 0 :(得分:2)
问题是ListView有自己的Scroll查看器,因此当您滚动ListView时,ListView滚动查看器会获得滚动事件。
如果您不需要选择项目,那么最简单的方法就是用ItemsControl替换ListView
如果需要选择项目,则可以从ListView的样式中删除ScrollViewer。这是一个没有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事件