Buduję aplikację fotograficzną, używając FlipView
i listView
jako paginacji. Po kliknięciu na miniaturę zdjęcia w ListView
pokazuje mi to samo zdjęcie w numerze FlipView
. Po przesunięciu do FlipView
każde wybrane zdjęcie wybierze ten sam obraz w urządzeniu ListView
. Odbywa się to poprzez dodanie do nich obu:Obliczanie przesunięcia poziomego do przewijania ListView do środka zaznaczonego elementu
Do ListView
:
SelectedIndex="{Binding Path=SelectedIndex, ElementName=flipView1, Mode=TwoWay}
i do FlipView
:
SelectedIndex="{Binding Path=SelectedIndex, ElementName=listView1, Mode=TwoWay}
A do zdarzenia ListView SelectionChanged
I dodaje:
if (e.AddedItems.Count > 0)
listView1.ScrollIntoView(e.AddedItems.First(), ScrollIntoViewAlignment.Leading);
Jedynym moim problemem jest to, że po przesunięciu FlipView
, żądane zdjęcie jest wybrane w ListView
, ale ScrollViewer
nie jest przewijane do niego. Próbowałem za pomocą WinRTXamlToolkit
zmienić pozycję 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);
}
Pierwszy raz listWidth
jest 1600.0
a następnie staje 0.0
cały czas, co daje xPos = 0.0
!
Jak mogę rozwiązać ten problem?
od '' ListViewItem' ma metodę BringIntoView' – Julien
'BringIntoView' nie istnieje w Windows 8.1! "BringIntoViewOnFocusChanged" istnieje dla 'ScrollViewer', ale nie działa zgodnie z oczekiwaniami! – yalematta
Czy przewijasz listę w pionie lub w poziomie? Spróbuję sprawdzić dbl, ale zobaczę, że myślę, że jest na liście1. Czy wszystkie twoje przedmioty mają ten sam rozmiar w widoku listy? – Quincy