Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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
如何使用Synfusion SfListView在Xamarin垂直ListView和网格之间切换?_Listview_Xamarin_Xamarin.forms_Syncfusion - Fatal编程技术网

如何使用Synfusion SfListView在Xamarin垂直ListView和网格之间切换?

如何使用Synfusion SfListView在Xamarin垂直ListView和网格之间切换?,listview,xamarin,xamarin.forms,syncfusion,Listview,Xamarin,Xamarin.forms,Syncfusion,我计划使用SfListView创建一个垂直列表,单击按钮,布局外观必须更改为2列网格布局。如何做到这一点?您可以使用IsVisible属性切换beterrn SFListview和Grid。但我建议使用Listview而不是Grid。因为Listview可以与SFLisview使用相同的ItemSource Xaml: <ContentPage.Content> <StackLayout> <Button Clicked="But

我计划使用SfListView创建一个垂直列表,单击按钮,布局外观必须更改为2列网格布局。如何做到这一点?

您可以使用
IsVisible
属性切换beterrn SFListview和Grid。但我建议使用Listview而不是Grid。因为Listview可以与SFLisview使用相同的ItemSource

Xaml:

 <ContentPage.Content>
    <StackLayout>
        <Button Clicked="Button_Clicked" />
        <sf:SfListView x:Name="SFListview" ItemsSource="{Binding Infos}">
            <sf:SfListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Orientation="Horizontal">
                            <Label Text="{Binding Name}" />
                            <Label Text="{Binding Age}" />
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </sf:SfListView.ItemTemplate>
        </sf:SfListView>
        <Grid x:Name="grid" IsVisible="False">
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>

            <Label
                Grid.Row="0"
                Grid.Column="0"
                Text="A" />
            <Label
                Grid.Row="0"
                Grid.Column="1"
                Text="1" />

            <Label
                Grid.Row="1"
                Grid.Column="0"
                Text="B" />
            <Label
                Grid.Row="1"
                Grid.Column="1"
                Text="2" />

            <Label
                Grid.Row="2"
                Grid.Column="0"
                Text="C" />
            <Label
                Grid.Row="2"
                Grid.Column="1"
                Text="3" />

        </Grid>
    </StackLayout>
</ContentPage.Content>
 public partial class Page2 : ContentPage
{
    public ObservableCollection<Info> Infos { get; set; }
    public Page2()
    {
        InitializeComponent();
        Infos = new ObservableCollection<Info>()
        {
             new Info(){ Name="A", Age=1},
              new Info(){ Name="B", Age=2},
               new Info(){ Name="C", Age=3},
        };

        this.BindingContext = this;
    }

    private void Button_Clicked(object sender, EventArgs e)
    {
        SFListview.IsVisible = false;
        grid.IsVisible = true;
    }
}
public class Info
{
    public string Name { get; set; }
    public int Age { get; set; }

}

代码隐藏:

 <ContentPage.Content>
    <StackLayout>
        <Button Clicked="Button_Clicked" />
        <sf:SfListView x:Name="SFListview" ItemsSource="{Binding Infos}">
            <sf:SfListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Orientation="Horizontal">
                            <Label Text="{Binding Name}" />
                            <Label Text="{Binding Age}" />
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </sf:SfListView.ItemTemplate>
        </sf:SfListView>
        <Grid x:Name="grid" IsVisible="False">
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>

            <Label
                Grid.Row="0"
                Grid.Column="0"
                Text="A" />
            <Label
                Grid.Row="0"
                Grid.Column="1"
                Text="1" />

            <Label
                Grid.Row="1"
                Grid.Column="0"
                Text="B" />
            <Label
                Grid.Row="1"
                Grid.Column="1"
                Text="2" />

            <Label
                Grid.Row="2"
                Grid.Column="0"
                Text="C" />
            <Label
                Grid.Row="2"
                Grid.Column="1"
                Text="3" />

        </Grid>
    </StackLayout>
</ContentPage.Content>
 public partial class Page2 : ContentPage
{
    public ObservableCollection<Info> Infos { get; set; }
    public Page2()
    {
        InitializeComponent();
        Infos = new ObservableCollection<Info>()
        {
             new Info(){ Name="A", Age=1},
              new Info(){ Name="B", Age=2},
               new Info(){ Name="C", Age=3},
        };

        this.BindingContext = this;
    }

    private void Button_Clicked(object sender, EventArgs e)
    {
        SFListview.IsVisible = false;
        grid.IsVisible = true;
    }
}
public class Info
{
    public string Name { get; set; }
    public int Age { get; set; }

}
公共部分类第2页:内容页
{
公共可观测集合信息{get;set;}
公共页2()
{
初始化组件();
Infos=新的ObservableCollection()
{
新信息(){Name=“A”,年龄=1},
新信息(){Name=“B”,年龄=2},
新信息(){Name=“C”,年龄=3},
};
this.BindingContext=this;
}
已单击私有无效按钮(对象发送者,事件参数e)
{
SFListview.IsVisible=false;
grid.IsVisible=true;
}
}
公共类信息
{
公共字符串名称{get;set;}
公共整数{get;set;}
}
屏幕截图:

 <ContentPage.Content>
    <StackLayout>
        <Button Clicked="Button_Clicked" />
        <sf:SfListView x:Name="SFListview" ItemsSource="{Binding Infos}">
            <sf:SfListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Orientation="Horizontal">
                            <Label Text="{Binding Name}" />
                            <Label Text="{Binding Age}" />
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </sf:SfListView.ItemTemplate>
        </sf:SfListView>
        <Grid x:Name="grid" IsVisible="False">
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>

            <Label
                Grid.Row="0"
                Grid.Column="0"
                Text="A" />
            <Label
                Grid.Row="0"
                Grid.Column="1"
                Text="1" />

            <Label
                Grid.Row="1"
                Grid.Column="0"
                Text="B" />
            <Label
                Grid.Row="1"
                Grid.Column="1"
                Text="2" />

            <Label
                Grid.Row="2"
                Grid.Column="0"
                Text="C" />
            <Label
                Grid.Row="2"
                Grid.Column="1"
                Text="3" />

        </Grid>
    </StackLayout>
</ContentPage.Content>
 public partial class Page2 : ContentPage
{
    public ObservableCollection<Info> Infos { get; set; }
    public Page2()
    {
        InitializeComponent();
        Infos = new ObservableCollection<Info>()
        {
             new Info(){ Name="A", Age=1},
              new Info(){ Name="B", Age=2},
               new Info(){ Name="C", Age=3},
        };

        this.BindingContext = this;
    }

    private void Button_Clicked(object sender, EventArgs e)
    {
        SFListview.IsVisible = false;
        grid.IsVisible = true;
    }
}
public class Info
{
    public string Name { get; set; }
    public int Age { get; set; }

}

我们已经检查了报告的查询“在SfListview中从线性布局切换到网格布局”。我们希望您能够在运行时将requirement Layout Manager属性实现到GridLayout中

代码段C#:使用GridLayout更新LayoutManager

private void按钮\u已单击(对象发送者,事件参数e)
{
var layoutManager=listView.layoutManager;
if(布局管理器为线性布局)
{
listView.LayoutManager=new GridLayout(){SpanCount=2};
}
其他的
listView.LayoutManager=新建LinearLayout();
}

请参阅下面的演示示例

Hi!你会提供同样的数据吗?如果是这样,我会使用不同的模板与布局你想要的。但是如果数据不同,我只会隐藏
SfListView
,并用网格显示另一个视图。