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 の Style から 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 イベントを設定して使用する必要があります。

于 2013-09-10T11:45:00.713 に答える