Xamarin.forms 如何向CarouselView中的DataTemplete添加和列表元素数量一样多的标签?
我正在使用Xamarin Forms PCL开发一个应用程序 我想为每个项目创建一个具有不同数量按钮的旋转木马视图 这是我的密码Xamarin.forms 如何向CarouselView中的DataTemplete添加和列表元素数量一样多的标签?,xamarin.forms,xamarin.android,xamarin.ios,Xamarin.forms,Xamarin.android,Xamarin.ios,我正在使用Xamarin Forms PCL开发一个应用程序 我想为每个项目创建一个具有不同数量按钮的旋转木马视图 这是我的密码 public class Main { ObservableCollection<Data> Datas = new ObservableCollection<Data>(); /* add some data */ CarouselView carouselView = new CarouselView();
public class Main {
ObservableCollection<Data> Datas = new ObservableCollection<Data>();
/* add some data */
CarouselView carouselView = new CarouselView();
carouselView.SetBinding(ItemsView.ItemsSourceProperty, "Datas");
carouselView.ItemTemplate = new DataTemplate(() =>{
var layout = new StackLayout();
Label titleLabel = new Label();
titleLabel.SetBinding(Label.TextProperty, "Title");
layout.Children.Add(titleLabel);
//I want to do like this
/*
foreach(var body in Bodys) {
var btn = new Button {
Text = body
};
layout.Children.Add(btn);
}
*/
return layout;
});
}
public class Data {
public string Title { get; set; }
public List<string> Bodys { get; set; }
}
公共类主{
ObservableCollection数据=新的ObservableCollection();
/*添加一些数据*/
CarouselView CarouselView=新的CarouselView();
转盘视图设置绑定(ItemsView.ItemsSourceProperty,“数据”);
carouselView.ItemTemplate=新数据模板(()=>{
var布局=新的StackLayout();
标签标题标签=新标签();
titleLabel.SetBinding(Label.TextProperty,“Title”);
布局.Children.Add(标题标签);
//我想这样做
/*
foreach(主体中的主体变量){
var btn=新按钮{
文本=正文
};
布局.Children.Add(btn);
}
*/
返回布局;
});
}
公共类数据{
公共字符串标题{get;set;}
公共列表主体{get;set;}
}
你有什么想法吗
谢谢。在您的情况下,您可以使用
<CarouselView ItemsSource="{Binding Datas}">
<CarouselView.ItemTemplate>
<DataTemplate>
<StackLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
<Label Text="{Binding Title}" />
<StackLayout BindableLayout.ItemsSource="{Binding Bodys}" Orientation="Horizontal">
<BindableLayout.ItemTemplate>
<DataTemplate>
<StackLayout Margin="10" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
<Button Text="{Binding .}" />
</StackLayout>
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>
</StackLayout>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
在您的ViewModels中
public ObservableCollection<Data> Datas {get; set;}
publicobservableCollection数据{get;set;}
是否要在第一个项目中添加一个按钮,然后在第二个项目中添加两个按钮,依此类推?@LucasZhang MSFT否。我想添加与“Bodys”属性大小相同的按钮。就像这个身体{“a”}→ 一个按钮。主体{“a”、“b”、“c”}→ “三个按钮”似乎您已经实现了它。@LucasZhang MSFT这只是一个例子。它不好用:(什么方法不好用?
?你最好提供更多细节。