我正在构建一个照片应用程序,使用FlipView
和listView
作为分页。
当我点击ListView
中的缩略图时,它会在FlipView
中显示相同的图片。当我滑入FlipView
时,所选的任何照片都会在ListView
中选择相同的照片。这可以通过添加到它们来完成:
致ListView
:
SelectedIndex="{Binding Path=SelectedIndex, ElementName=flipView1, Mode=TwoWay}
到FlipView
:
SelectedIndex="{Binding Path=SelectedIndex, ElementName=listView1, Mode=TwoWay}
我添加的ListView SelectionChanged
事件:
if (e.AddedItems.Count > 0)
listView1.ScrollIntoView(e.AddedItems.First(), ScrollIntoViewAlignment.Leading);
我唯一的问题是当我滑动FlipView
时,在ListView
中选择了所需的图片,但ScrollViewer
未滚动到该WinRTXamlToolkit
。我尝试使用ScrollViewer
更改private void pageRoot_Loaded()
{
// count number of all items
int itemCount = this.listView1.Items.Count;
if (itemCount == 0)
return;
if (listView1.SelectedIndex >= itemCount)
listView1.SelectedIndex = itemCount - 1;
// calculate x-posision of selected item
double listWidth = this.listView1.ActualWidth;
double xPos = (listWidth / itemCount) * listView1.SelectedIndex;
// scroll
var scrollViewer2 = listView1.GetFirstDescendantOfType<ScrollViewer>();
if (scrollViewer2 != null)
scrollViewer2.ChangeView(xPos, 0.0, 1);
}
的位置:
listWidth
第一次1600.0
为0.0
,然后它始终变为xPos = 0.0
,这会给{{1}}!
我该如何解决这个问题?
答案 0 :(得分:0)
https://msdn.microsoft.com/library/windows/apps/windows.ui.xaml.controls.listview.aspx
您应该使用两种“ScrollIntoView”方法之一。
答案 1 :(得分:0)
ListView.ScrollIntoView()
应该有效。调用方法滚动ScrollViewer
时可能会出现问题,因为它已经滚动了ScrollViewer.InvalidateScrollInfo()
。我会尝试摆弄ViewChanging/ViewChanged
,这可能会加快速度。否则 - 您可以尝试处理ScrollViewerViewChangedEventArgs.IsIndeterminate
个事件以查看它是否正在滚动并尝试将该信息与glOrtho
一起使用来链接呼叫。
同时检查我对这个问题的回答: Centering selected item in a scroll viewer