繁体   English   中英

共有三个网格,点击Grid3控件后,如何获取Grid1和Grid2的控件值。 Xamarin

[英]There are three grids, and after clicking on the Grid3 control, then how to get the control values for Grid1 and Grid2. Xamarin

我正在使用 Grid 并尝试在循环中动态控制。

有3个Grid,点击Grid3控件后,想得到Grid1和Grid2的控件值。

请看图片。

任何帮助表示赞赏。 谢谢!

在此处输入图像描述

后面的代码:

Dictionary<string, string[]> myDictionary3 = _Model.getRoomStatusData(_Model.RoomTypesSel, _Model.StartTimeNames);
//Grid 1 x:Name="timelist"
for (int i = 0; i < _Model.StartTimeNames.Length; i++)
{   
    Label time = new Label() { Text = _Model.StartTimeNames[i], WidthRequest = 80 };               
    timelist.Children.Add(time, i, 0);               
}

//Grid 2 x:Name="roomtype"
for (int i = 0; i < roomtypes.Length; i++)
{
    roomtype.RowDefinitions.Add(new RowDefinition());           
    Label room = new Label() { Text = _Model.RoomTypesSel[i].Name, WidthRequest = 80 };      
    roomtype.Children.Add(room, 0, i);
}


List<string[]> roomstatu = new List<string[]>()
{
    new string[] {"1","2","3","4","5","6"}, new string[] {"1","2","3","4","5","6"},new string[] {"1","2","3","4","5","6"},new string[] {"1","2","3","4","5","6"},new string[] {"1","2","3","4","5","6"},new string[] {"1","2","3","4","5","6"},new string[] {"1","2","3","4","5","6"},new string[] {"1","2","3","4","5","6"}
};
//Grid 3 x:Name="status"
int index = 0;
foreach (var item in roomstatu)
{
    status.RowDefinitions.Add(new RowDefinition());
    for (int i = 0; i < item.Length; i++)
    {
        status.ColumnDefinitions.Add(new ColumnDefinition());
        Label statuslabel = new Label() { Text = item[i], WidthRequest = 80};                           
        status.Children.Add(statuslabel, i, index);
    }
    index++;              
}

首先,您可以在状态网格中获取 label 用户的索引。 然后您可以通过索引获取标签的行 position 和列 position。

我做了一个示例,效果很好,您可以尝试以下代码:

        int index = 0;
        foreach (var item in roomstatu)
        {
            status.RowDefinitions.Add(new RowDefinition());
            for (int i = 0; i < item.Length; i++)
            {
                status.ColumnDefinitions.Add(new ColumnDefinition());
                Label statuslabel = new Label() { Text = item[i], WidthRequest = 80 };
                status.Children.Add(statuslabel, i, index);
                statuslabel.GestureRecognizers.Add((new TapGestureRecognizer
                {
                    Command = new Command(async (obj) =>
                    {
                        Label temp = obj as Label;
                        Grid gridtemp = temp.Parent as Grid;
                        int position = gridtemp.Children.IndexOf(temp);
                        int columnindex = position % timelist.Children.Count;
                        int rowindex = (position / roomtype.Children.Count) +1;
                        
                        string timevalue = ((Label)timelist.Children[columnindex]).Text;
                        string roomtypealue = ((Label)roomtype.Children[rowindex]).Text;
                        temp.Text = timevalue + "+"+ roomtypealue;
                    }),
                    CommandParameter = statuslabel,
                }));
            }
            index++;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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