我有ListView系結ItemsSource(它是ObservableRangeCollection)。我想ListView在頁面出現時自動向下滾動。我該怎么辦?
它是View:
<ListView
x:Name="ListAdd"
ItemsSource="{Binding AddNewFlashcard}"
(...)
>
<ListView.Behaviors>
<(...)>
</ListView.Behaviors>
<ListView.ItemTemplate>
<DataTemplate x:DataType="models:Flashcard">
<ViewCell>
<Grid Padding="10">
<Frame CornerRadius="20" HasShadow="True">
<StackLayout VerticalOptions="Center">
<Label FontSize="Large"
Text="{Binding Word}"
VerticalOptions="Center"/>
<Label Text="{Binding Sentence}"
VerticalOptions="Center"/>
</StackLayout>
</Frame>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
它是視圖模型:
public ObservableRangeCollection<Flashcard> AddNewFlashcard { get; set; }
public NewFlashcardVM()
{
Refresh();
AddNewFlashcard = new ObservableRangeCollection<Flashcard>();
}
public async void Refresh()
{
IsBusy = true;
var flashcards = await FlashcardService.GetFlashcard();
AddNewFlashcard.AddRange(flashcards);
IsBusy = false;
}
uj5u.com熱心網友回復:
你可以通過呼叫ListView中的ScrollTo方法來達到你想要的效果。
我寫了一個小例子供您參考。
這是xaml代碼:
<StackLayout>
<Frame HeightRequest="100">
<ListView x:Name="mytest" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding .}"></Label>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Frame>
</StackLayout>
下面是后臺代碼(加載資料時,在OnAppearing方法中呼叫ListView的ScrollTo方法):
public partial class MainPage : ContentPage
{
ObservableRangeCollection<string> myList;
public MainPage()
{
InitializeComponent();
myList = new ObservableRangeCollection<string>();
myList.Add("aaa");
myList.Add("aaa");
myList.Add("aaa");
myList.Add("aaa");
myList.Add("aaa");
myList.Add("aaa");
myList.Add("bbb");
mytest.ItemsSource = myList;
BindingContext = this;
}
protected override void OnAppearing()
{
base.OnAppearing();
mytest.ScrollTo(myList[myList.Count-1], ScrollToPosition.End,false);
}
}
如果將ScrollTo的最后一個引數更改為true,則會出現滑動影片。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/351715.html
標籤:C# 列表显示 xamarin.forms
