我在 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> 

请您参考如下方法:

我会尝试在这里使用一些背后的代码。

  1. 为 ScrollViewer 命名(如“x:Name="MyScrolly"')。
  2. 监听 ListView 的“SelectionChanged”事件。
  3. 在选择更改事件的事件处理程序中(代码隐藏)调用:

    MyScrolly.ScrollToBottom();

我认为新项目总是在底部。如果没有尝试此方法:'ScrollToVerticalOffset()'。


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

C# Excel 自动化仅在 Excel 可见时起作用