Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.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
C# 如果我在xamarin表单的代码隐藏中编写代码,为什么我的视图不可见?_C#_Xamarin_Xamarin.forms - Fatal编程技术网

C# 如果我在xamarin表单的代码隐藏中编写代码,为什么我的视图不可见?

C# 如果我在xamarin表单的代码隐藏中编写代码,为什么我的视图不可见?,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,我在代码隐藏中为我的视图编写代码。这是我的代码: public类视图1:ContentView { 公众意见1() { 内容=新的堆栈布局 { 儿童={ 新标签{Text=“CATEGORY 1”,边距=新厚度(20,0,0,10),TextColor=Color.Black,FontSize=18,fonttributes=fonttributes.Bold} } }; BoxView零件线=新的BoxView { HeightRequest=1, 宽度请求=80, 颜色=颜色。从十六进制(“

我在代码隐藏中为我的视图编写代码。这是我的代码:

public类视图1:ContentView
{
公众意见1()
{
内容=新的堆栈布局
{
儿童={
新标签{Text=“CATEGORY 1”,边距=新厚度(20,0,0,10),TextColor=Color.Black,FontSize=18,fonttributes=fonttributes.Bold}
}
};
BoxView零件线=新的BoxView
{
HeightRequest=1,
宽度请求=80,
颜色=颜色。从十六进制(“#e0”)
};
var grid=new grid();
网格边距=新厚度(10,0,0,0);
网格填充=0;
添加(新行定义{Height=newgridlength(30)});
添加(新行定义{Height=newgridlength(1)});
添加(新行定义{Height=newgridlength(30)});
添加(新行定义{Height=newgridlength(1)});
添加(新行定义{Height=newgridlength(30)});
添加(新行定义{Height=newgridlength(1)});
grid.ColumnDefinitions.Add(newcolumnDefinition{Width=newgridlength(40)});
Add(newColumnDefinition{Width=newGridLength(1,GridUnitType.Star)});
var image1=新图像{Source=“food1”};
var label1=新标签{Text=“供应商名称1”};
线1的BoxView件_=新的BoxView
{
HeightRequest=1,
宽度请求=80,
颜色=颜色。从十六进制(“#e0”)
};
var image2=新图像{Source=“food1”};
var label2=新标签{Text=“供应商名称2”};
线2的BoxView件_=新的BoxView
{
HeightRequest=1,
宽度请求=80,
颜色=颜色。从十六进制(“#e0”)
};
var image3=新图像{Source=“food1”};
var label3=新标签{Text=“供应商名称3”};
线路3的BoxView零件_=新的BoxView
{
HeightRequest=1,
宽度请求=80,
颜色=颜色。从十六进制(“#e0”)
};
grid.Children.Add(image1,0,0);
grid.Children.Add(标签1,0,1);
网格。设置柱跨度(第1、2条线);
grid.Children.Add(第1,1,0行);
grid.Children.Add(image2,0,0);
grid.Children.Add(标签2,0,1);
网格。设置柱跨度(第2、2条线);
grid.Children.Add(第2,1,0条线);
grid.Children.Add(image3,0,0);
grid.Children.Add(标签3,0,1);
网格。设置柱跨度(第3、2条线);
grid.Children.Add(第3,1,0条线);
内容=网格;
}
}
这就是我需要的用户界面

这是我的看法。正如你所看到的,只有一个图像是可见的-

我曾经用XAML进行设计,但因为它是内容视图,所以我必须用代码隐藏编写设计代码。这就是为什么我不熟悉这个。我不能像在XAML中那样将整个视图放在堆栈布局中。这是我用XAML编写的视图代码:



我必须将同样的XAML代码实现到C#。有什么建议吗?

如果我正确理解了这段代码,您将在同一行中添加所有项目:

grid.Children.Add(image1, 0, 0);
grid.Children.Add(label1, 0, 1);
Grid.SetColumnSpan(piece_ofLine1, 2);
grid.Children.Add(piece_ofLine1, 1, 0);

grid.Children.Add(image2, 0, 0);
grid.Children.Add(label2, 0, 1);
Grid.SetColumnSpan(piece_ofLine2, 2);
grid.Children.Add(piece_ofLine2, 1, 0);

grid.Children.Add(image3, 0, 0);
grid.Children.Add(label3, 0, 1);
Grid.SetColumnSpan(piece_ofLine3, 2);
grid.Children.Add(piece_ofLine3, 1, 0);
Add方法先获取视图,然后获取列和行

现在,所有Add调用都具有相同的值,因此所有元素都将放在同一行中。它应该更像这样:

// Row 1
grid.Children.Add(image1, 0, 0);
grid.Children.Add(label1, 0, 0);
Grid.SetColumnSpan(piece_ofLine1, 2);
grid.Children.Add(piece_ofLine1, 1, 0);

// Row 2
grid.Children.Add(image2, 0, 1);
grid.Children.Add(label2, 0, 1);
Grid.SetColumnSpan(piece_ofLine2, 2);
grid.Children.Add(piece_ofLine2, 1, 1);

// Row 3
grid.Children.Add(image3, 0, 2);
grid.Children.Add(label3, 0, 2);
Grid.SetColumnSpan(piece_ofLine3, 2);
grid.Children.Add(piece_ofLine3, 1, 2);

如果我正确理解了这段代码,您将在同一行中添加所有项:

grid.Children.Add(image1, 0, 0);
grid.Children.Add(label1, 0, 1);
Grid.SetColumnSpan(piece_ofLine1, 2);
grid.Children.Add(piece_ofLine1, 1, 0);

grid.Children.Add(image2, 0, 0);
grid.Children.Add(label2, 0, 1);
Grid.SetColumnSpan(piece_ofLine2, 2);
grid.Children.Add(piece_ofLine2, 1, 0);

grid.Children.Add(image3, 0, 0);
grid.Children.Add(label3, 0, 1);
Grid.SetColumnSpan(piece_ofLine3, 2);
grid.Children.Add(piece_ofLine3, 1, 0);
Add方法先获取视图,然后获取列和行

现在,所有Add调用都具有相同的值,因此所有元素都将放在同一行中。它应该更像这样:

// Row 1
grid.Children.Add(image1, 0, 0);
grid.Children.Add(label1, 0, 0);
Grid.SetColumnSpan(piece_ofLine1, 2);
grid.Children.Add(piece_ofLine1, 1, 0);

// Row 2
grid.Children.Add(image2, 0, 1);
grid.Children.Add(label2, 0, 1);
Grid.SetColumnSpan(piece_ofLine2, 2);
grid.Children.Add(piece_ofLine2, 1, 1);

// Row 3
grid.Children.Add(image3, 0, 2);
grid.Children.Add(label3, 0, 2);
Grid.SetColumnSpan(piece_ofLine3, 2);
grid.Children.Add(piece_ofLine3, 1, 2);

您也可以用xaml为
ContentView
编写代码。添加
ContentView
时,它附带两个文件.xaml和.cs。与
ContentPage
相同。您也可以用xaml为
ContentView
编写代码。添加
ContentView
时,它附带两个文件.xaml和.cs。与
ContentPage
相同。