Привязка текста кнопки к переменной в Carouselview - PullRequest
0 голосов
/ 05 июля 2018

Я довольно новичок в 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; }
}

Заранее спасибо за любые указатели.

1 Ответ

0 голосов
/ 05 июля 2018
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 имеет значение List<Item>, контекст привязки DataTemplate будет таким, какой Item в данный момент "активен", поэтому Binding Path должно быть Property для Item.

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