是否有任何wpf UIElement的唯一标识符?

Ars*_*yan 8 c# wpf wpf-controls uielement

为了在我的WPF表单中记录用户操作,我添加了一些全局事件处理程序

我想准确记录哪个控件触发事件,是否有UIElement像ASP.Net中的ClientId这样的wpf的唯一标识符?

Jas*_*dge 11

你为什么不使用哈希码.

您可以比较这些值以确保它们是同一个对象,并且很容易获得它们 .GetHashCode()


编辑

显然每次运行程序时都会有所不同,所以实际上这绝对是一个坏主意,除非你想在每次记录进程时更新日志.尽管如此

我的意思是你可以在创建日志时为每个对象存储一个哈希值,但我不知道我是否喜欢它


Ars*_*yan 2

似乎我找到了问题的答案,答案是否定的,现在就可以这样做,正如 MSDN 中所述(http://msdn.microsoft.com/en-us/magazine/dd483216.aspx)

请注意,顶级 Window 控件定义不包含 Name 属性。这很重要,因为我们很快就会看到,当您编写测试自动化时,使用 MUIA 库获取对控件的引用的一种简单方法是访问 AutomationId 属性,该属性是由编译器根据控件的 Name 属性生成的。没有 XAML Name 属性的控件将不会接收 AutomationId 属性。这个想法是一个具体的低级示例,说明了考虑安全性、可扩展性和测试自动化等应用程序设计问题的重要性。