如何自动将 UIElement 的名称放入标签中

How to automatically put in the tag the name of the UIElement

我知道这可能看起来很奇怪,但我需要自动将图形元素的名称放入标签中 例如

var tbkMain = new TextBlock(){Foreground = ...,..., Tag = ??? } <----here I wish automatically Tag= "TbkMain"

var grdSmall = new TextBlock(){Foreground = ...,..., Tag = ??? } <----here I wish automatically Tag= "grdSmall"

还有事后做的像

tbkMain.Tag = ???;

或(甚至更好):

foreach(var element in grdMain.Children)
      element.Tag = ???

谢谢

我不得不承认我什至不知道这是否可能或从哪里开始。 谢谢

从`here可以看出nameof就是你需要的

因此例如:

tbkMain.Tag = nameof(tbkMain);

但这不是很有用,因为它几乎不需要写 tbkMain.Tag = "tbkMain"

至于我书中的另一个机会,如果你这样做是不可能的:

foreach (UIElement item in grdAll.Children)
            item.Tag = nameOf(item);<----error
                

这是不可能的,因为您必须定义类型。 即使你这样做:

foreach (UIElement item in grdAll.Children)
            {
                if (item is TextBlock) (item as TextBlock).Tag = nameof(item);
                if (item is StackPanel) (item as StackPanel).Tag = nameof(item);
                ...
            }

结果将是项目而不是真实姓名。因此无用。 对不起... `