当在运行时添加更多项目时,FlipView 不显示在桌面中导航的箭头

FlipView doesn't show the arrows to navigate in desktop, when more items are added in runtime

我正在使用 FlipView 来显示页面中的一些项目。我从支持分页获取数据的网络服务,所以当用户滚动到当前最后一个项目时,我将下一页项目添加到 FlipView,例如如果页面大小为 5,只要 FlipView 的 SelectedIndex 为 4、9、14、19 等(索引从 0 开始),我就会再添加 5 个项目。

FlipView 有两个小箭头,我们可以在桌面环境中使用它们(使用鼠标)在 FlipView 中导航。当我们到达最后一项时,向右的箭头会消失,因为我们不能再往前走了。现在,如果我此时向列表添加更多项目,右箭头不会重新出现,因此不会给人以 FlipView 中有更多项目的印象。只有在

时,右箭头才会重新出现
  1. 我们将鼠标悬停在左箭头上
  2. 我们点击右箭头所在的位置

这不是一个好的解决方案,需要进一步的用户教育。有什么办法可以解决这个问题吗?

这是一个显示问题的 git 存储库:https://github.com/4bh1sh3k/FlipViewDemo。要重现该问题,请滚动到最后一个项目,然后使用下面的按钮将更多项目添加到 FlipView。

这个应该是控件自己决定的。如果您确实希望该按钮自动显示,您可以强制显示下一个按钮(在 FlipView style and template) to visible after more items added. For how to get the NextButtonHorizontal button you could use VisualTreeHelper class 中命名为 NextButtonHorizontal。例如:

private void OnButtonClick(object sender, RoutedEventArgs e)
{
    AddImageUris();  
    IEnumerable<Button> items = FindVisualChildren<Button>(myFlipView);
    foreach (Button item in items)
    {
        if (item.Name == "NextButtonHorizontal")
        {
            item.Visibility = Visibility;
        }
    }
}
private static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
    if (depObj != null)
    {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
        {
            DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
            if (child != null && child is T)
            {
                yield return (T)child;
            }

            foreach (T childOfChild in FindVisualChildren<T>(child))
            {
                yield return childOfChild;
            }
        }
    }
}

顺便说一句,这可以解决您的问题,但我不是很推荐这样做。避免对较大的集合使用翻转视图控件,对于较大的集合,请考虑 ListViewGridView。更多详情请参考FlipView guidelines.