/// <summary> /// <see cref="SaveListViewScroll"/> によって保存されたスクロール位置を復元します /// </summary> private void RestoreListViewScroll(DetailsListView listView, TabModel tab, ListViewScroll listScroll) { if (listView.VirtualListSize == 0) return; switch (listScroll.ScrollLockMode) { case ScrollLockMode.FixedToTop: listView.EnsureVisible(0); break; case ScrollLockMode.FixedToBottom: listView.EnsureVisible(listView.VirtualListSize - 1); break; case ScrollLockMode.FixedToItem: var topIndex = listScroll.TopItemStatusId != null ? tab.IndexOf(listScroll.TopItemStatusId.Value) : -1; if (topIndex != -1) listView.TopItem = listView.Items[topIndex]; break; case ScrollLockMode.None: default: break; } }
public App () { // The root page of your application MainPage = new ListViewScroll(); }
/// <summary> /// <see cref="ListView"/> のスクロール位置に関する情報を <see cref="ListViewScroll"/> として返します /// </summary> private ListViewScroll SaveListViewScroll(DetailsListView listView, TabModel tab) { var listScroll = new ListViewScroll { ScrollLockMode = this.GetScrollLockMode(listView), }; if (listScroll.ScrollLockMode == ScrollLockMode.FixedToItem) { var topItem = listView.TopItem; if (topItem != null) listScroll.TopItemStatusId = tab.GetStatusIdAt(topItem.Index); } return listScroll; }