【发布时间】:2016-12-06 16:28:31
【问题描述】:
是否有可能使用 XPath 来识别正在运行的应用程序中的每个 XAML 元素?
例如,如果我有以下 XAML 结构。
<Page>
<StackPanel>
<Button />
<Button />
</StackPanel>
</Page>
例如,我想知道第二个按钮的 XPath,当我拥有它后,我想通过 XPath 检索该按钮。
我知道如果我有 XmlDocument,我可以毫无问题地使用 XPath,但如果可能的话,我想用正在运行的应用程序中的元素来实现相同的东西。
【问题讨论】:
-
你能展示你想写的代码吗?不太清楚“与正在运行的应用程序中的元素相同的东西”是什么意思......
-
听起来很痛苦。如果您要从代码隐藏中访问控件,命名它们是有意义的 (x:Name="someName") 然后根据它们的名称访问它们( Button btn = (Button)this.FindName("someName ");)
-
@AlexeiLevenkov 我的意思是当我点击第二个按钮时,我想获得“/Page/StackPanel/Button[index]”。之后感谢 XPath 表达式,我想找到按钮。
-
@Asnivor 可能很痛苦,但是,我很好奇这是否可能(没有命名)。
-
你可以......但我不相信有一个现有的实现。如果你真的想做一个 - 阅读 XPathNavigator,它旨在允许 XPath 在任意树上导航......但据我所知,这种方法从未成功 - 很难找到任何有用的示例/实现。