gleber1
@gleber1

Как сделать список в xaml?

<corelayouts:CarouselViewDots 
        BindingContext="{Binding Path=.}" 
        HorizontalOptions="FillAndExpand" 
        VerticalOptions="FillAndExpand"  
        DotColor="White" 
        DotSize="6" 
        ScrollToIndex="{Binding ScrollToIndex, Mode=TwoWay}">
      <corelayouts:CarouselViewDots.CarouselViews>
        <View> // Здесь предполагается список из вьюх для будущих слайдов
          <citem:NewsCarouselView/>
        </View>
      </corelayouts:CarouselViewDots.CarouselViews>
    </corelayouts:CarouselViewDots>


private IEnumerable<View> _carouselViews;


        public IEnumerable<View> CarouselViews
        {
            get { return _carouselViews; }
            set
            {
                _carouselViews = value;
            }
        }

Ну это естественно не работающий код, только для примера что я хочу получить в результате
  • Вопрос задан
  • 410 просмотров
Решения вопроса 1
wcoder
@wcoder
Cross-platform developer
Если вы используете контрол из этой статьи www.maiersoft.de/blog/creating-a-xamarin-forms-car...

Вариант 1

Воспользоваться свойством ItemTemplate по умолчанию + контрол ContentView:

<corelayouts:CarouselViewDots.ItemTemplate>
	<DataTemplate>
		<ContentView Content="{Binding .}"/> // биндим View из коллекции
	</DataTemplate>
</corelayouts:CarouselViewDots.ItemTemplate>


Вариант 2

Обратите внимание на устройство контролов, а именно на используемое по-умолчанию свойство ItemTemplate которое внутри работает так:
foreach (var item in ItemsSource) {
    var view = (View)ItemTemplate.CreateContent();
    var bindableObject = view as BindableObject;
    if (bindableObject != null)
        bindableObject.BindingContext = item;
    _stack.Children.Add (view);
}

_stack это контрол StackLayout

Т.е. вы можете сделать то, что хотите, путем создания собственного BindableProperty (по примеру ItemsSource) - списка вьюх при изменении которого будет происходить изменение содержимого StackLayout.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы