2009-12-23 15 views
16

में नियंत्रण का ध्यान ढूंढने का कोई तरीका है क्या यह बताने का कोई तरीका है कि नियंत्रण (विशेष रूप से एक System.Windows.Controls.TextBox) Silverlight में केंद्रित है या नहीं? मैं निम्नलिखित (आप एक नियमित नेट आवेदन में देखना होगा क्या) की तरह कुछ के लिए देख रहा हूँ:सिल्वरलाइट

textBox.Focused 

यह कुछ सरल और तुच्छ एक नियंत्रण से बाहर जाने के लिए की तरह लगता है, और अभी तक मैं नहीं मिल सकता है कहीं भी एक जवाब।

अद्यतन

एक से थोड़ा अधिक सुरुचिपूर्ण समाधान, रोब के जवाब शामिल है, इसलिए जैसे ही विस्तार विधि बनाने के लिए है:

public static bool IsFocused(this Control control) 
{ 
    return FocusManager.GetFocusedElement() == control; 
} 

उत्तर

27

आप का उपयोग करने के FocusManager

bool b = FocusManager.GetFocusedElement() == textBox; 
+1

धन्यवाद। मुझे आश्चर्य है कि क्यों माइक्रोसॉफ्ट ने इसे हर जगह संभालने के तरीके को संभालने का फैसला किया है (यहां तक ​​कि अपने स्वयं के उत्पादों) ... – Dov

+0

शायद यह इंस्टॉलर को छोटा रखने में मदद करता है? –

0

के रूप में है जैसे ही आपके पास एक से अधिक इनपुट तत्व शामिल होते हैं (जिसे उपयोगकर्ता inpu को संभालने के लिए ध्यान केंद्रित करने की आवश्यकता होती है टी) फोकसमेनगर से पूछना अब चाल नहीं करेगा। इसे आज़माएं:

private bool HasFocus { get; set; } 

protected override void OnGotFocus(RoutedEventArgs e) 
{ 
    base.OnGotFocus(e); 
    HasFocus = true; 
} 

protected override void OnLostFocus(RoutedEventArgs e) 
{ 
    base.OnLostFocus(e); 
    HasFocus = false; 
}