首页 > 解决方案 > 将按钮文本绑定到 Carouselview 中的变量

问题描述

我对 Xamarin 相当陌生,我正在尝试将文本数据绑定到我希望在轮播视图中存在的按钮。我无法让按钮显示或显示文本。当按钮位于轮播视图之外时,绑定有效,因为我可以使用 x:Name。我的研究告诉我,我不能在轮播中使用 x:Name,因为它期望控件发生变化。

按钮显示日期,当您向左或向右滑动时,日期会相应更改,我可以通过滑动更改日期,但我什么也看不到。

            <forms:CarouselView x:Name="MainCarouselView" Grid.Row="1" >
                <forms:CarouselView.ItemTemplate>
                    <DataTemplate>
                        <Button Text="{Binding buttonDate}" BackgroundColor="Red"/>
                    </DataTemplate>
                </forms:CarouselView.ItemTemplate>
            </forms:CarouselView>

代码隐藏如下。

public MyPage()
{           
   InitializeComponent();

   this.BindingContext = this;
   var buttonDate = new DateButton
   {
       ButtonDate = DateTime.Now.ToString()
   };
}

public class DateButton
{
    public string ButtonDate { get; set; }
}

在此先感谢您的任何指点。

标签: c#xamarinxamarin.formscarousel

解决方案


public class Item {
  DateTime Date { get; set; }
}

var data = new List<Item>();

data.Add(new Item { Date = DateTime.Now };
data.Add(new Item { Date = DateTime.Now.AddDays(1) };
data.Add(new Item { Date = DateTime.Now.AddDays(2) };

MainCarouselView.ItemsSource = data;

因为您的 ItemsSource 是 a List<Item>,所以 DataTemplate 的绑定上下文将Item是当前“活动”的那个,所以Binding Path应该是 a Propertyon Item

<Button Text="{Binding Date}" BackgroundColor="Red"/>

推荐阅读