首页 > 解决方案 > 从字符串名称访问网格中的标签

问题描述

我有一个循环,可以将标签添加到某些网格列和行。我将每个标签的名称设置为“label_x_y”,其中 x 和 y 是其各自的 X 和 Y 坐标。然后我需要通过名称“label_x_y”访问每个标签来设置它们的一些背景颜色 - 我该怎么做?

例如:

Label playSquare = new Label();
playSquare.Name = String.Format("playSquare_{0}_{1}", 25, 25);
playArea.Children.Add(playSquare);

playSquare_25_25.Background = new SolidColorBrush(Colors.Red);

标签: c#wpfxaml

解决方案


为什么不在将其添加到之前设置它的Grid.ColumnGrid.Row附加属性?LabelGrid

Grid.SetColumn(playSquare, 25);
Grid.SetRow(playSquare, 25);

然后,您可以简单地使用这些属性Label通过其在 中的位置来检索Grid

int x = 25;
int y = 25;
Label label = playArea.Children.OfType<Label>()
    .FirstOrDefault(l => Grid.GetColumn(l) == x && Grid.GetRow(l) == y);

这是一个更好的解决方案,它试图识别Label' 在Grid使用其名称中的位置。


推荐阅读