如何使用Synfusion SfListView在Xamarin垂直ListView和网格之间切换?
我计划使用SfListView创建一个垂直列表,单击按钮,布局外观必须更改为2列网格布局。如何做到这一点?您可以使用如何使用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
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
,并用网格显示另一个视图。