如何自动将 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);
...
}
结果将是项目而不是真实姓名。因此无用。
对不起...
`
我知道这可能看起来很奇怪,但我需要自动将图形元素的名称放入标签中 例如
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);
...
}
结果将是项目而不是真实姓名。因此无用。 对不起... `