給出2個應用程序運行時:組XAML屬性在從其他C#申請(AutomationProperties.AutomationId)
- 1 WPF應用,其中並非所有控件具有的AutomationID,並且我不能改變。另外,應用程序在運行時添加控件,而不設置AutomationId。它能夠自動上述WPF應用程序
- 1控制檯應用程序
我需要的,因爲我想幾乎相同的時間內訪問的所有元素。 (在使用之前搜索自動化元素似乎在時間上有很大差異(取決於元素數量和樹層數)
我想設置AutomationID的WPF控件WPFs運行時期間的控制檯應用程序。如果你能想到解決這個問題的任何解決方案,我們將非常高興知道!
我曾嘗試至今:
1)的思考
Type type = element.GetType();
FieldInfo fi = type.GetField("AutomationIdProperty");
fi.SetValue(element, "x"); //Error
錯誤消息:「類型 'System.String' 的對象不能被轉換爲類型「System.Windows .Automation.AutomationProperty'「但我想交出一個值,而不是屬性類型...
如果我使用下列代替,它不會引發錯誤,但在XAML中不會發生任何變化
fi.SetValue(element, AutomationElement.AutomationIdProperty);
2)直接
AutomationElement element; // = my AutomationElement
element.Current.AutomationId = "x"; //since AutomationId is Readonly - its not possible
3)DependencyObjects和DependencyProperties似乎也很有希望,但我不能想出一個解決方案爲止。 有人有經驗嗎?
可能的重複[有沒有方法來設置一個對象的AutomationID不使用XAML?](http://stackoverflow.com/questions/14617061/is-there-a-way-to-set-the- automationid-of-an-object-without-using-xaml) – cremor
不這麼認爲。 1。他的問題是關於winForms,如果他將切換到XAML應用程序將被解決 2.他假設,是在同一個應用程序中,在比較,我想從其他應用程序設置AutomationIds(我希望這出來在我最初的帖子中)。 在同一個應用程序中,使用XAML會很容易: myUIControl.SetValue(AutomationProperties.AutomationIdProperty,「newID」); – Hansa