[英]Xamarin Forms CarouselView Loop Binding Doesn't work
我有一個綁定到我的CarouselView
的集合,我想讓CarouselView
的Loop
屬性僅在集合中有超過 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.