[英]Creating a list or array from label text values in xamarin.Forms c#
我有Xamarin表单的堆栈布局,其中包含大量标签和图像。
我需要遍历堆栈&找到标签的地方,将标签的文本值移动到数组或列表中。 标签分为3组,但组数可变。 标签1始终是距离,标签2是持续时间,标签3是指令。 所以我希望列表/数组具有以下结构:
Entry|Distance|Duration|Instructions|
0----|181km---|28min---|Some text---|
1----|200km---|10min---|Some text---|
因此,每组3个标签都需要在列表中形成一个条目,因为它们都是相关的。 我尝试了各种方法,但最接近的方法如下(但由于在情况1和情况2中出现错误,它说我正在使用未分配的变量,因此还不正确。我认为这是因为这仅仅是在案例0中声明)。 我关闭吗? 还是有一种更明显的方法将这些值转换为我所追求的结构?
提前致谢。
创建了一个类:
public class TripSteps
{
public int stage { get; set; }
public string distance { get; set; }
public string duration { get; set; }
public string instructions { get; set; }
}
&然后将标签文本值添加到列表中:
var x=0
var Step = 0
List<TripSteps> Trip_Steps = new List<TripSteps>();
StackLayout route_stages_stack = (StackLayout)child;
var route_stages_children = route_stages_stack.Children;
foreach (var child2 in route_stages_children)
{
if (child2.GetType() == typeof(Label))
{
Label new_text = (Label)child2;
switch (x)
{
case 0: var step = new TripSteps(); step.stage = Step; step.distance = new_text.Text; x++; break;
case 1: step.duration = new_text.Text; x++; break;
case 2: step.instructions = new_text.Text; Trip_Steps.Add(step); x = 0; Step++; break;
}
}
}
在第一种情况退出后,您的变量似乎超出了范围:请尝试以下操作:
var x=0
var Step = 0
List<TripSteps> Trip_Steps = new List<TripSteps>();
StackLayout route_stages_stack = (StackLayout)child;
var route_stages_child
ren = route_stages_stack.Children;
var step = new TripSteps(); // Variable defined outside the loop and case statement now.
foreach (var child2 in route_stages_children)
{
if (child2.GetType() == typeof(Label))
{
Label new_text = (Label)child2;
switch (x)
{
case 0: step.stage = Step; step.distance = new_text.Text; x++; break;
case 1: step.duration = new_text.Text; x++; break;
case 2: step.instructions = new_text.Text; Trip_Steps.Add(step); x = 0; Step++; step = new TripSteps();break;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.