[英]Xamarin.Forms CarouselView CurrentItem binding not working in v4.6.0.772
我有一個輪播視圖和一個按鈕。 我想當用戶單擊按鈕輪播更改 CurrentItem。 這是我的 xaml:
<StackLayout>
<CarouselView CurrentItem="{Binding Answer}" ItemsSource="{Binding Answers}">
<CarouselView.ItemTemplate>
<DataTemplate>
<Label Text="{Binding Display}"/>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
<Button Text="Next" Command="{Binding OnNext}"/>
</StackLayout>
這是我的視圖模型:
public class MyViewModel : INotifyPropertyChanged
{
private List<Answer> _answers;
private Answer _answer;
private int _index = 0;
public MyViewModel()
{
Answers = new List<Answer>()
{
new Answer("Ans1"),
new Answer("Ans2"),
new Answer("Ans3"),
};
Answer = Answers[_index];
OnNext = new Command(() =>
{
_index++;
Answer = Answers[_index];
});
}
public List<Answer> Answers
{
get { return _answers; }
set
{
if (_answers != value)
{
_answers = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Answers)));
}
}
}
public Answer Answer
{
get { return _answer; }
set
{
if (_answer != value)
{
_answer = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Answer)));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
public ICommand OnNext { get; set; }
}
這是我設置綁定上下文的方式:
protected override void OnAppearing()
{
base.OnAppearing();
BindingContext = new MyViewModel();
}
“答案”是簡單的 class 具有一個字符串屬性顯示
此代碼在 xamarin.forms 4.4.0.991265 中完全有效,但是當我將 XF 更新為 4.6.0.772 時,它停止更改 CurrentItem,並且當我按下“下一步”按鈕時輪播不會移動。
同圖與 Position 綁定。 當我在 model 視圖中增加 position 時,它在 4.4.0.991265 中有效,但在 4.6.0.772 中無效。
我在 android 模擬器上試過:Android 9.0 - API 28
嘗試:
public ObservableCollection<Answer> _answers { get; set; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.