Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms 如何向CarouselView中的DataTemplete添加和列表元素数量一样多的标签?_Xamarin.forms_Xamarin.android_Xamarin.ios - Fatal编程技术网

Xamarin.forms 如何向CarouselView中的DataTemplete添加和列表元素数量一样多的标签?

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();

我正在使用Xamarin Forms PCL开发一个应用程序

我想为每个项目创建一个具有不同数量按钮的旋转木马视图

这是我的密码

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这只是一个例子。它不好用:(什么
方法不好用?
?你最好提供更多细节。