微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin 表单 CarouselView 循环绑定不起作用 解决方法改编自链接的问题

如何解决Xamarin 表单 CarouselView 循环绑定不起作用 解决方法改编自链接的问题

我有一个绑定到我的 CarouselView 的集合,我想让 LoopCarouselView 属性仅在集合中有 1 个以上的元素时才为真。这应该很容易,但我不知道为什么它不起作用

<CarouselView ItemsSource="{Binding FoodCards}" Loop="{Binding IsLooping}">

并且在我的 viewmodel 中,我有一个命令,当我按下某个按钮以仅显示一个元素并将 IsLooping 设置为 False

IsLooping = FoodCards.Count > 1;

能达到这个效果吗?或者我们不能在运行时更改 Loop

编辑:

如果我不更改集合尺寸,则以下答案中的解决方法有效。现在我有一个绑定到 CarouselView 的 3 个元素的集合,我还有一个带有命令的按钮。命令中的代码是:

void OnChangeLoop(){
            Items.Clear();
            Items.Add("item1");
            Items.Add("item2");
            Loop = !Loop;
        }

在后面的代码中,我有 PropertyChanged解决方法。 当我按下按钮时,我得到 java.lang.IllegalArgumentException: 'Invalid target position

解决方法

这是一个已知错误,您可以在https://github.com/xamarin/Xamarin.Forms/issues/13706

上关注进度

解决方法(改编自链接的问题)

代码隐藏

YourPage()       //Constructor
{
      InitializeComponent();
      BindingContext = new YourViewModel();
      (BindingContext as YourViewModel).PropertyChanged += Vm_PropertyChanged;
}

void Vm_PropertyChanged(object sender,PropertyChangedEventArgs e)
{
    if (e.PropertyName == nameof(YourViewModel.IsLooping))
    {
        carousel.Loop = ((YourViewModel)BindingContext).IsLooping;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。