当在运行时添加更多项目时,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 中有更多项目的印象。只有在
时,右箭头才会重新出现
- 我们将鼠标悬停在左箭头上
- 我们点击右箭头所在的位置
这不是一个好的解决方案,需要进一步的用户教育。有什么办法可以解决这个问题吗?
这是一个显示问题的 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;
}
}
}
}
顺便说一句,这可以解决您的问题,但我不是很推荐这样做。避免对较大的集合使用翻转视图控件,对于较大的集合,请考虑 ListView
或 GridView
。更多详情请参考FlipView
guidelines.
我正在使用 FlipView 来显示页面中的一些项目。我从支持分页获取数据的网络服务,所以当用户滚动到当前最后一个项目时,我将下一页项目添加到 FlipView,例如如果页面大小为 5,只要 FlipView 的 SelectedIndex 为 4、9、14、19 等(索引从 0 开始),我就会再添加 5 个项目。
FlipView 有两个小箭头,我们可以在桌面环境中使用它们(使用鼠标)在 FlipView 中导航。当我们到达最后一项时,向右的箭头会消失,因为我们不能再往前走了。现在,如果我此时向列表添加更多项目,右箭头不会重新出现,因此不会给人以 FlipView 中有更多项目的印象。只有在
时,右箭头才会重新出现- 我们将鼠标悬停在左箭头上
- 我们点击右箭头所在的位置
这不是一个好的解决方案,需要进一步的用户教育。有什么办法可以解决这个问题吗?
这是一个显示问题的 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;
}
}
}
}
顺便说一句,这可以解决您的问题,但我不是很推荐这样做。避免对较大的集合使用翻转视图控件,对于较大的集合,请考虑 ListView
或 GridView
。更多详情请参考FlipView
guidelines.