質問は古いですが、同じ問題があり、良い解決策が見つかりませんでした。
だから私は同じ問題を抱えている他の人のために私の解決策を投稿します。
私の最初の解決策は、データをスクロールしてロードするためのカスタム動作を備えた独自の IncrementalLoadCollection でした。問題なく動作しますが、私には十分ではありません。
そこで、別の強力な XAML トリックを試してみたところ、マウス ホイールの小さな動作を除いて、完全に機能しました。今は逆になっています:)。
ソリューションは非常にシンプルで強力です。ListView の ScrollViewer を 180° 回転させて反転させるだけで、スクロールバーが再び右側に表示されます。次に、アイテムに対して同じことを行い、再び正しいようにします。
それでおしまい。インクリメンタル ロードは ListView によって処理され、タッチ イベントとスクロールバーは正しく機能します。マウス ホイールの動作が逆になっただけです。
私のコード
<ListView Grid.Row="1" x:Name="ChatListView" ItemsSource="{TemplateBinding ItemsSource}"
SelectionMode="None"
IsItemClickEnabled="False"
IsZoomedInView="False"
ShowsScrollingPlaceholders="False"
VerticalContentAlignment="Top"
VerticalAlignment="Stretch"
Margin="10,5">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<ContentPresenter/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemContainerTransitions>
<TransitionCollection/>
</ListView.ItemContainerTransitions>
<ListView.Template>
<ControlTemplate>
<Border BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}">
<ScrollViewer ZoomMode="Disabled" x:Name="ScrollViewer" RenderTransformOrigin="0.5,0.5">
<ScrollViewer.RenderTransform>
<CompositeTransform Rotation="180" ScaleX="-1"/>
</ScrollViewer.RenderTransform>
<ItemsPresenter x:Name="ItemsPresenter"/>
</ScrollViewer>
</Border>
</ControlTemplate>
</ListView.Template>
<ListView.ItemTemplate>
<DataTemplate>
<controls:ChatMessageControl Message="{Binding Message}"
ChatFrom="{Binding Name}"
IsMy="{Binding IsMy}"
ShortTime="{Binding CreatedTime}"
RenderTransformOrigin="0.5,0.5">
<controls:ChatMessageControl.RenderTransform>
<CompositeTransform Rotation="180" ScaleX="-1"/>
</controls:ChatMessageControl.RenderTransform>
</controls:ChatMessageControl>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>