2009-09-08 17 views
5

मैं चाहता हूं कि पूर्वावलोकन टेक्स्टक्स्ट इनपुट हैंडलर से एक नया नियंत्रण बनाया गया हो और फोकस उस पर सेट हो। लेकिन नए नियंत्रण पर फोकस() को कॉल करने के बाद भी, कर्सर अभी भी पुराने टेक्स्टबॉक्स में है। हैंडलर UserControl_PreviewTextInput UserControl पर पंजीकृत है जिसमें यह महत्वपूर्ण है यदि यह महत्वपूर्ण है। (सरलीकृत)WPF: फोकस सेट नहीं कर सकता

private void UserControl_PreviewTextInput(object sender, TextCompositionEventArgs e) 
{ 
      CodeLineControl el = new CodeLineControl(); 
      container.Children.Insert(idx+1, el); 
      el.innerTextBox.Focus(); 
} 

CodeLineControl इस तरह परिभाषित किया गया है:

<UserControl ..> 
    <DockPanel Name="codeline" Background="AntiqueWhite" >   
     <TextBox Name="innerTextBox"/>  
    </DockPanel> 
</UserControl> 

वहाँ फोकस() पर कुछ सीमाएं कि Iam के बारे में awre नहीं हैं? क्या मुझे एक पूर्वावलोकन टेक्स्ट से हैंडलर से टेक्स्टबॉक्स से फोकस() को स्थानांतरित करने की अनुमति नहीं है? क्या मैं नव निर्मित तत्वों पर ध्यान केंद्रित नहीं कर सकता?

public static void BackgroundFocus(this UIElement el) 
    { 
     Action a =() => el.Focus(); 
     el.Dispatcher.BeginInvoke(DispatcherPriority.Background, a); 
    } 

कोई एक टाइमर बनाने की आवश्यकता:

उत्तर

3

एक DispatcherTimer कि एक देरी

+0

इसकी आवश्यकता क्यों है? मैंने गुई को नया नियंत्रण जोड़ा ताकि यह दिखाई दे और फोकस योग्य हो। – codymanix

+0

मुझे लगता है कि यह एक अलग थ्रेड में असीमित रूप से प्रस्तुत किया जाता है और जब तक यह पूरा नहीं हो जाता तब तक आप उस पर ध्यान केंद्रित नहीं कर सकते। या, यह हो सकता है कि एक नए नियंत्रण के बाद, डब्ल्यूपीएफ फोकस स्वयं बदलता है। शायद लॉस्टफोकस घटना किसी बिंदु पर निकाल दी गई है? आप एक लॉगफाइल लिख सकते हैं यह देखने के लिए कि कौन से नियंत्रण फोकस कर रहे हैं/खो रहे हैं। http://www.julmar.com/blog/mark/PermaLink ,guid,6e4769e5-a0b3-47b2-a142-6dfefd0c028e.aspx –

18

इस के बाद उस पाठ बॉक्स पर ध्यान दें कॉल बनाएं विस्तार विधि मैं फोकस के बजाय के लिए इस्तेमाल करते हैं।

+2

महान समाधान! +1 – Dabblernl

+0

मैं अपना कोडेज़ चोरी करता हूं! मैं ['फोकसलाइकचन नॉरिस'] का नाम बदलता हूं (http://www.chucknorrisfacts.com)! (+1) –

संबंधित मुद्दे