使用 For 循环 Xamarin 表单简化字典

问题描述

我正在尝试简化这本词典的创建:

private Dictionary<Guid,int> emojiSelect = new Dictionary<Guid,int>
            {

                { emoji0.Id,0 },{ emoji1.Id,1 },{ emoji2.Id,2 },{ emoji3.Id,3 },{ emoji4.Id,4 },{ emoji5.Id,5 },{ emoji6.Id,6 },{ emoji7.Id,7 },};

使用 FOR 循环是因为元素遵循递增结构,它会减少应用程序的大小,从而节省用户空间。但是因为字典的键是用 XAML 元素的 Guid 填充的,所以我陷入了僵局,我不知道如何使用字符串来引用变量名。

我已经开始了:

for(int counter = 0; counter <= 7; counter++)
            {
                emojiArray.Add(//???\\,counter);
            }

我基本上希望能够将单词“emoji”与当前存储在“counter”变量中的数字连接起来,并将其用作对特定 XAML 元素的引用,正如目前在完全编写的字典中所发生的那样:

EG: "emoji" ++ 1 --> reference to 'emoji1' object

完成此引用后,我将能够在其末尾使用 .Id 来恢复它的 Guid

解决方法

如果 emojiXaml 中的 Element,您可以通过循环其 RootLayout 来获取它们。

例如,如果它们在 StackLayout 中,如下所示:

 <StackLayout x:Name="RootLayout">
     ...
     <... x:Name="emoji0" .../>
     <... x:Name="emoji1".../>
     <... x:Name="emoji2".../>
     ...
 </StackLayout>

然后您可以按如下方式获取它们:

foreach (var item in RootLayout.Children)
{
    emojiArray.Add(item.Id);
    Console.WriteLine("++++++++++++" +item.Id);
}