Xamarin.forms 以Xamarin形式绑定数据
我有一个可枚举的数据源,我想绑定到Xamarin表单中的某个控件 我希望布局看起来像这样-Xamarin.forms 以Xamarin形式绑定数据,xamarin.forms,Xamarin.forms,我有一个可枚举的数据源,我想绑定到Xamarin表单中的某个控件 我希望布局看起来像这样- ColA | ColB | ColC | ColD 3 4 1 6 15 25 62 26 只是一个有标题的标准表格 我尝试了ListView,但它不支持标题。我尝试过TableLayout,但它不支持绑定到数据源 <Grid x:Name="dgvEmp"> <Grid.RowDefinitions> &
ColA | ColB | ColC | ColD
3 4 1 6
15 25 62 26
只是一个有标题的标准表格
我尝试了ListView,但它不支持标题。我尝试过TableLayout,但它不支持绑定到数据源
<Grid x:Name="dgvEmp">
<Grid.RowDefinitions>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
</Grid.ColumnDefinitions>
</Grid>
我是否错过了一些东西,或者我应该使用其他控件。是的,它没有现成的控件,这里有一种破解方法: 创建一个网格,其中有一行作为标题(4列),下一行有一个listview,其中有一个viewcell作为项目,然后使用viewcell模板,在模板中有一个网格,其中有4列和4个标签(每列1个),就像标题一样,现在的技巧是如何在1个viewcell中绑定4个值,我的建议是有一个类似“某物”的对象,它有Prop1,Prop2,Prop3,Prop4,现在你将label1绑定到Prop1,label2绑定到Prop2,如此类推, 因此,当您创建数据源时,它将类似于:
var list = List<Something>();
list.Add(new Something() { Prop1 = 3, Prop2 = 4, Prop3 = 1, Prop4 = 6});
list.Add(new Something() { Prop1 = 15, Prop2 = 25, Prop3 = 62, Prop4 = 26});
var list=list();
Add(newsomething(){Prop1=3,Prop2=4,Prop3=1,Prop4=6});
Add(newsomething(){Prop1=15,Prop2=25,Prop3=62,Prop4=26});
这应该能满足你的需要 正如Stephane Delcroix在另一个问题中提到的:-
“”
ListView本机不支持水平方向,因此您不能使用它,因为您的理想情况是希望绑定到IEnumerable数据源
<Grid x:Name="dgvEmp">
<Grid.RowDefinitions>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
</Grid.ColumnDefinitions>
</Grid>
下面的帖子中提到了另一种黑客方法:-
“”
这建议使用旋转来解决这个问题,尽管这很可能会非常麻烦,并且在一些情况下会出现问题,因为旋转将应用于正常视图边界之外,除非它是正方形尺寸
但是,这将允许您使用可绑定数据源,方法是使用ListView的ItemTemplate属性,并使用其中指定的其他控件绑定创建DataTemplate
<> P.>对于旋转攻克,它并不理想,而我个人甚至不考虑它。
目前,最好的方法是按照Rui所提到的那样,创建一种由相等列组成的网格,并在其中进行格式化
您还可以通过为每个子视图指定一个特定的宽度请求来实现这一点,然后在每个子视图中进行格式化
如果您需要显示超过4列或超过典型设备屏幕宽度的信息,那么您可能希望将滚动视图作为该网格或堆栈布局的父级,这样您就可以以更好的间距查看所有内容,而不是将所有内容塞入其中
作为最后一种选择,您可以编写自己的自定义呈现程序,以支持具有可绑定数据源的水平ListView。
<Grid x:Name="dgvEmp">
<Grid.RowDefinitions>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
</Grid.ColumnDefinitions>
</Grid>
列出lstEmp;
公共网格基础()
{
初始化组件();
lstEmp=新列表()
{
新雇员()
{
EmpId=1,EmpName=“Test1”,EmpSalary=12345
},
新雇员()
{
EmpId=2,
EmpName=“Test2”,
EMPALARY=12345
},
新雇员()
{
EmpId=3,
EmpName=“Test3”,
EMPALARY=12334
}
};
添加(新标签(){Text=“EmpName”},0,0);
添加(新标签(){Text=“EmpSal”},1,0);
对于(int i=0,j=1;i),如果行数相对较低,您也可以使用网格渲染,并使用绑定的标签填充行(TableLayout可以绑定,但不能以这种方式绑定,因此无法实现此目的。下面的网格建议是您的最佳选择,或者HTML和WebView。请添加一些说明。