我在 C# 中使用 WPF MVVM。我在 UserControl 中有一个 Scrollviewer,我需要以下功能,但我无法弄清楚该怎么做,基本上是:
当一个项目被添加到我的 ScrollViewer 的内容时;如果添加的项目不可见,我希望我的 ScrollViewer 向下滚动,以便我可以在我的 ListView 中查看我新添加的项目。我已经能够成功绑定(bind)所选项目,但不确定如何使其滚动到它。
这就是它真正的全部,但我不确定该怎么做。如果有任何意见或问题,我会尝试适当修改帖子,我在下面包含了 .xaml
谢谢
<ScrollViewer Background="Pink" HorizontalAlignment="Left" Height="173" x:Name="ScrollViewer1" Width="560" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden">
<Grid Name="GridValuesAndpartss" VerticalAlignment="Top" Height="165">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="370" />
<ColumnDefinition Width="204" />
</Grid.ColumnDefinitions>
<ListView SelectedItem="{Binding SelectedBetmyValue, Mode=TwoWay}" ItemsSource="{Binding Values}" Name="BetValuesListView" Height="Auto" Margin="0,0,0,0" myValueMode="Single" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<ListView.View>
<GridView>
<GridViewColumn Header="Price " Width="95">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="-7,0,0,0" MinWidth="95" Width="Auto">
<TextBlock Text="{Binding Path=PriceTypeCode}" Foreground="Black" FontSize="10" ToolTip="Price Type Code" />
<TextBlock Text=":" Foreground="Black" FontSize="10" ToolTip="Price Type Code" />
<TextBlock Text="{Binding Path=PriceTaken,Converter={StaticResource myValuePriceDisplayConverter}}" Foreground="Red" FontSize="10" ToolTip="Price Taken" />
<TextBlock Text="." FontSize="4" />
<TextBlock Text="{Binding Path=PriceCurrent,Converter={StaticResource myValuePriceDisplayConverter}}" Foreground="Black" FontSize="10" ToolTip="Price @ Scan Time" />
<TextBlock Text="." FontSize="4" />
<TextBlock Text="{Binding Path=PriceSP,Converter={StaticResource myValuePriceDisplayConverter}}" Foreground="Green" FontSize="10" ToolTip="Price SP" />
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
</ScrollViewer>
请您参考如下方法:
我会尝试在这里使用一些背后的代码。
- 为 ScrollViewer 命名(如“x:Name="MyScrolly"')。
- 监听 ListView 的“SelectionChanged”事件。
在选择更改事件的事件处理程序中(代码隐藏)调用:
MyScrolly.ScrollToBottom();
我认为新项目总是在底部。如果没有尝试此方法:'ScrollToVerticalOffset()'。