【问题标题】:Xamarin.Forms CarouselView CurrentItem binding not working in v4.6.0.772Xamarin.Forms CarouselView CurrentItem 绑定在 v4.6.0.772 中不起作用
【发布时间】: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.7724.7.0.773-pre 中重现该问题。现在的解决方法是使用早期版本,例如 Xamarin.forms 4.6.0.726。你可以在 Github 中打开一个 issue 来报告这个问题。
  • 我喜欢 XF 后退前进的方式!

标签: android xamarin xamarin.forms


【解决方案1】:

试试:

public ObservableCollection<Answer> _answers { get; set; }

【讨论】:

  • 如果您解释了您提供的代码如何回答问题,这将是一个更好的答案。
  • @goro,答案不明确。请阅读当有人answers您的问题时该怎么做。
猜你喜欢
  • 2017-11-02
  • 1970-01-01
  • 2022-01-14
  • 2020-02-06
  • 2018-12-09
  • 2019-04-29
  • 2018-04-09
  • 2015-11-12
相关资源
最近更新 更多