簡體   English   中英

Xamarin Forms CarouselView 循環綁定不起作用

[英]Xamarin Forms CarouselView Loop Binding Doesn't work

我有一個綁定到我的CarouselView的集合,我想讓CarouselViewLoop屬性僅在集合中有超過 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

這是一個已知的bug,你可以關注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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM