【问题标题】:WPF ListView Always focused last added item?WPF ListView 总是关注最后添加的项目?
【发布时间】:2010-02-20 22:27:10
【问题描述】:

我有许多 ListViews 与 IsSynchronizedWithCurrentItem="True" 具有相同的数据源 我正在动态地将项目添加到此数据源。

问题在于当滚动出现时,添加的项目是不可见的,除非我移动滚动条。我是否应该为此目的使用另一个控件.. 或者如何将最后添加的项目(和滚动条)带入视图。

到目前为止,我都是直接在 XAML 中做所有事情,所以如果可能的话,我会很感激这样的解决方案。

【问题讨论】:

    标签: wpf listview


    【解决方案1】:
    if ( !(myListView.Items.IsEmpty) )
    {
        myListView.ScrollIntoView(myListView.Items[myListView.Items.Count - 1]);
    }
    

    希望有帮助!

    【讨论】:

      【解决方案2】:

      我觉得你可能需要用到这个方法:

      ListView.ScrollIntoView(ListView.SelectedItem);
      

      【讨论】:

        【解决方案3】:

        我有一个解决方案:

        不是所有情况都适用,但是这一款就足够了!

        诀窍是 禁用 ListView ScrollBars 并用 ScrollViewer 将其包围。

        ...

        <Grid>
            <Grid.RowDefinitions>
               <RowDefinition Height="*" />  <!-- This is needed! -->
               ...
            </Grid.RowDefinitions>
        

        ..

        <ScrollViewer x:Name="MyScrollViewer" Grid.Row="0" >
                    <ListView Name="MyListView" 
                              ItemsSource="{Binding}" 
                              IsSynchronizedWithCurrentItem="True"
                              ScrollViewer.VerticalScrollBarVisibility="Disabled" />
        </ScrollViewer>
        

        ...

        </Grid>
        

        然后在需要时调用

        MyScrollViewer.ScrollToEnd();
        

        【讨论】:

          【解决方案4】:

          这听起来很可疑,但即使是真的,您也可以随时调用 ListView.BringIntoView() 方法,以...将所选项目显示在视图中:)。

          【讨论】:

          • 是的..你是对的,但你必须编写更多的代码来选择最后一项并将其显示出来..但这也是一种可能性
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多