6

पर शेष सत्यापन टूलटिप मुझे TabControl, TextBox और एक सत्यापन ToolTip के साथ कोई समस्या है।टैबकंट्रोल

कल्पना करें कि दो टैबइटम के साथ टैबकंट्रोल है। पहले आइटम पर एक साधारण TextBox है। यह TextBoxText संपत्ति UserControl की स्ट्रिंग प्रॉपर्टी से Mode=TwoWay और ValidatesOnExceptions=True के साथ ही जुड़ी हुई है। उस Text संपत्ति का सेटर जब भी सेट हो जाता है तो अपवाद फेंकता है।

UserControl की Resources अनुभाग TextBox के लिए एक नया डिफ़ॉल्ट शैली और सत्यापन ToolTip (उन शैलियों और टेम्पलेट्स तथापि MSDN से लिया जाता है) शामिल हैं।

अब TextBox में कुछ दर्ज करें और सत्यापन ToolTip प्रदर्शित होने पर:

enter image description here

तो दूसरा टैब बदल जाते हैं। सत्यापन ToolTip रहता है:

enter image description here

मैं एक Silverlight अनुप्रयोग है कि इस मुद्दे को दर्शाता है जिसमें एक वी.एस. समाधान का उत्पादन किया है। वीएस समाधान ज़िप संग्रह here उपलब्ध है।

क्या किसी को भी इस समस्या के लिए कोई समस्या या समाधान भी मिला है?

अस्वीकरण: सिल्वरलाइट 4 के संबंध में इसी तरह के प्रश्न here on StackOverflow है, जिसे साढ़े सालों से अनुत्तरित किया गया है। मैंने पहले ही silverlight.net पर यह प्रश्न पोस्ट किया है लेकिन कई दिनों के लिए कोई जवाब नहीं मिला है।

उत्तर

3

पढ़ा नहीं था मुझे लगता है कि इस TabControl -implementation की एक बग है। आपके उत्तर के लिए

public class TabControlFixBehavior: Behavior<TabControl> 
{ 
    protected override void OnAttached() 
    { 
     AssociatedObject.SelectionChanged += AssociatedObjectOnSelectionChanged; 
     base.OnAttached(); 
    } 

    protected override void OnDetaching() 
    { 
     AssociatedObject.SelectionChanged -= AssociatedObjectOnSelectionChanged; 

     base.OnDetaching(); 
    } 

    private void AssociatedObjectOnSelectionChanged(object sender, SelectionChangedEventArgs args) 
    { 
     if (args.RemovedItems.Count > 0) 
     { 
      var oldTabItem = args.RemovedItems[0] as TabItem; 
      if (oldTabItem != null) 
      { 
       var popups = VisualTreeHelper.GetOpenPopups(); 
       foreach (var popup in popups) 
       { 
        var toolTip = popup.Child as ToolTip; 
        if (toolTip != null) 
        { 
         if (VisualTreeHelper.GetRoot(toolTip.PlacementTarget) == oldTabItem.Content) 
         { 
          popup.IsOpen = false; 
         } 
        } 
       } 
      } 
     } 
    } 
} 
0

सत्यापन टूलटिप चांदी की रोशनी में एक निहित विशेषता है 5. कृपया अपने "मुख्य पृष्ठ" उपयोगकर्ता नियंत्रण में "UserControl.Resources" नोड को साफ़ करें और आपके पास अपेक्षित व्यवहार होगा।

[संपादित करें] मैं अपने प्रश्न के अंत में, खेद :)

+0

धन्यवाद, वास्तव में संसाधनों को हटाने के मुद्दे को हल करती है, लेकिन मेरे मामले में एक विकल्प है क्योंकि मैं इन नियंत्रणों स्टाइल की जरूरत नहीं है: मैं इस व्यवहार को क्रियान्वित किया है हमारे आवेदन में इसे ठीक करने के। मैंने अपने उदाहरण में एमएसडीएन से डिफ़ॉल्ट शैली को शामिल किया ताकि साबित किया जा सके कि यह समस्या मेरी शैलियों के कारण नहीं हो रही है। – Spontifixus