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

Posted

技术标签:

【中文标题】如何自动在标签中放入 UIElement 的名称【英文标题】:How to automatically put in the tag the name of the UIElement 【发布时间】:2021-05-07 21:05:24 【问题描述】:

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

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 = ???

谢谢

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

【问题讨论】:

【参考方案1】:

从`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);
                ...
            

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

【讨论】:

以上是关于如何自动在标签中放入 UIElement 的名称的主要内容,如果未能解决你的问题,请参考以下文章

Power Shell:需要在文件内容中放入文件具体名称

我正在创建一个双向链表,它将按字母顺序排列名称列表,但我不确定在 int main() 函数中放入啥

如何使用自动布局约束在单个屏幕中放置两个视图

关于ASP.NET listview的问题 ASP.NET DIV中放入 listview控件 设计视图布局全乱了

HTML网页中放入图片

在html的pre中放入div怎么不被解析