【发布时间】:2020-05-17 21:34:32
【问题描述】:
我有一个轮播视图和一个按钮。我想当用户单击按钮轮播更改 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();
}
"Answer" 是一个简单的类,只有一个字符串属性 Display
此代码完全适用于 xamarin.forms 4.4.0.991265,但是当我将 XF 更新到 4.6.0.772 时,它停止更改 CurrentItem,并且当我按下“下一步”按钮时轮播不会移动。
与位置绑定相同的图片。当我在视图模型中增加位置时,它在 4.4.0.991265 中有效,但在 4.6.0.772 中无效。
我在安卓模拟器上试过:Android 9.0 - API 28
【问题讨论】:
-
我可以在
4.7.0.772和4.7.0.773-pre中重现该问题。现在的解决方法是使用早期版本,例如 Xamarin.forms4.6.0.726。你可以在 Github 中打开一个 issue 来报告这个问题。 -
我喜欢 XF 后退前进的方式!
标签: android xamarin xamarin.forms