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

时间:2017-10-02 19:44:47

标签: windows uwp win-universal-app windows-10-universal uwp-xaml

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

FlipView有两个小箭头,我们可以在桌面环境中使用(使用鼠标)来浏览FlipView。当我们在最后一个项目时,右箭头将消失,因为我们不能再进一步了。现在,如果此时我向列表中添加了更多项目,则右箭头不会重新出现,因此它不会给出FlipView中有更多项目的印象。如果

,右箭头才会重新出现
  1. 我们将鼠标悬停在左箭头上
  2. 我们点击右箭头所在的位置
  3. 这不是一个好的解决方案,需要进一步的用户培训。有没有办法解决这个问题?

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

1 个答案:

答案 0 :(得分:1)

这应该由控件本身决定。如果您确实希望自动显示该按钮,则可以在添加更多项目后强制显示下一个按钮(在FlipView style and template中名为NextButtonHorizontal)。有关如何获取NextButtonHorizontal按钮,您可以使用VisualTreeHelper课程。例如:

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