繁体   English   中英

从xamarin.Forms C#中的标签文本值创建列表或数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM