<ListView x:Name="myListView" ItemsSource="{x:Bind PageViewModel.myCollectionOfThings, Mode=OneWay}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="viewmodels:ThingViewModel>
<TextBlock Text="{x:Bind Name, Mode=OneWay}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Button Name="TestButton" Tapped="TestButton_Tapped"/>
private void TestButton_Tapped(object sender, TappedRoutedEventArgs e)
{
PageViewModel.myCollectionOfThings.Add(newItem);
myListView.SelectedIndex++;
}
我試圖創建一個旋轉木馬控制**。使用上面的代碼,我可以在每次選定索引增加時動態地將項目添加到集合的末尾。除了一個問題之外,它可以像預期的那樣工作即使用戶界面反映了添加到ListView末尾的新項目,但如果我遍歷最後一個索引集合大小的最後一個索引,UI將跳回到列表的開始處,並且所選索引將變爲0. I已經嘗試了許多上述代碼的變體,並嘗試了不同的集合類型。我也試着重新分配ListView的ItemSource,每次迭代都沒有做任何事情。任何幫助,將不勝感激。
**我知道在UWP社區工具包中有一個叫做Carousel的東西,但它實際上並不是一個輪播。一個旋轉木馬可以循環滾動,因爲它的集合會循環,而這個控制不會。
一些線索。當我到達原始集合大小的索引時,它跳回到開始處並變爲SelectedIndex 0.我使用VisualTreeHelper方法來監視ListView中的子項。看來每次我添加一個項目時,孩子數量都不會增加。只有在這個「重置爲0」發生之後,那麼小孩的數量纔會反映正確的項目數量。因此,即使集合計數正在改變,並且myListView.Items.Count()正在更改,但直到ListView被設置爲索引值(儘管它超出範圍)後,子計數纔會更新。 –
我創建了一個示例項目。它按預期工作。你能提供整個班級嗎?以便我可以嘗試解決您的問題或使用Windows AppStudio Carousel控件。 –
您是否使用帶有INotifyPropertyChanged或ObservableCollection的List作爲ItemSource? –