मैं WPF AutomationPeer
भी साथ कई समस्याओं पड़ा है उपयोग कर रहा हूँ।
आप अपने WPF UI तत्वों को कस्टम ऑटोमेशन पीयर का उपयोग करने के लिए मजबूर कर अपनी समस्या का समाधान करने में सक्षम हो सकते हैं जो कि बाल नियंत्रण के ऑटोमेशन पीयर को वापस नहीं लौटाकर डिफ़ॉल्ट रूप से अलग-अलग व्यवहार करता है। यह किसी भी यूआई स्वचालन सामान काम करना बंद कर सकता है, लेकिन उम्मीद है कि आपके मामले में, खान में के रूप में, आप यूआई स्वचालन उपयोग नहीं कर रहे ..
एक कस्टम स्वचालन सहकर्मी वर्ग कि FrameworkElementAutomationPeer
से विरासत और GetChildrenCore
विधि ओवरराइड करता है बनाएँ, एक वापस जाने के लिए बाल नियंत्रण स्वचालन सहकर्मियों की बजाय खाली सूची। जब ऑटोमेशन पीयर के पेड़ के माध्यम से पुनरावृत्ति करने का प्रयास होता है तो इससे समस्याएं उत्पन्न होनी चाहिए।
नियंत्रण प्रकार निर्दिष्ट करने के लिए GetAutomationControlTypeCore
को ओवरराइड करें जिसे आप स्वचालन सहकर्मी का उपयोग करेंगे। इस उदाहरण में मैं AutomationControlType
को कन्स्ट्रक्टर पैरामीटर के रूप में पास कर रहा हूं। यदि आप अपने विंडोज़ पर अपने कस्टम ऑटोमेशन पीयर को लागू करते हैं तो इसे अपनी समस्याओं का समाधान करना चाहिए क्योंकि मुझे लगता है कि रूट तत्व का उपयोग सभी बच्चों को वापस करने के लिए किया जाता है।
public class MockAutomationPeer : FrameworkElementAutomationPeer
{
AutomationControlType _controlType;
public MockAutomationPeer(FrameworkElement owner, AutomationControlType controlType)
: base(owner)
{
_controlType = controlType;
}
protected override string GetNameCore()
{
return "MockAutomationPeer";
}
protected override AutomationControlType GetAutomationControlTypeCore()
{
return _controlType;
}
protected override List<AutomationPeer> GetChildrenCore()
{
return new List<AutomationPeer>();
}
}
कस्टम स्वचालन सहकर्मी जैसे कि आपका यूआई तत्व में OnCreateAutomationPeer
विधि ओवरराइड उपयोग करने के लिए विंडो:
protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer()
{
return new MockAutomationPeer(this, AutomationControlType.Window);
}
स्रोत
2016-03-27 21:20:34
क्या आप दिखा सकते हैं कि आपको कोड में कहां अपवाद मिल रहा है? – Terrance