2009-07-15 7 views
6

बदलने के लिए WPF ट्रिगर को ट्रिगर में TreeViewItem के कर्सर को बदलने की आवश्यकता है। इस कोड को अन्य सभी गुणों के लिए काम करता है लेकिन कर्सर नहीं:कर्सर

<Style.Triggers> 
    <MultiTrigger> 
    <MultiTrigger.Conditions> 
     <Condition Property="QuickPhrases:TreeViewChecker.IsMouseDirectlyOverItem"  
        Value="True"> 
     </Condition> 
     <Condition Property="CanSelect" Value="True"></Condition> 
     </MultiTrigger.Conditions> 
     <Setter Property="BorderThickness" Value="0,0,0,1" /> 
     <Setter Property="BorderBrush" Value="Blue" /> 
     <Setter Property="Cursor" Value="Hand"></Setter> 
     <Setter Property="Foreground" Value="Blue"></Setter> 
    </MultiTrigger> 
</Style.Triggers> 

क्या देता है, और यह भी, मैं कैसे इसे सही ढंग से करते हैं?

उत्तर

4

आप इसे सही तरीके से कर रहे हैं, इसे केवल काम करना चाहिए। असल में मैं निम्नलिखित चरणों के माध्यम से अपनी समस्या को पुन: पेश करने में असमर्थ हूं:

  • वीएस 2008 सी # डब्ल्यूपीएफ एप्लिकेशन विज़ार्ड के माध्यम से एक नई परियोजना बनाई गई।
    • App.xaml और Window1.xaml
  • जोड़ा गया Window1 को टूलबॉक्स से एक मानक TreeView में जिसके परिणामस्वरूप।
  • जोड़ा गया 2 TreeViewItems '1' और '2'।
  • TargetType="TreeViewItem" के साथ एक शैली जोड़ा गया।
  • जैसा कि आपके स्निपेट को चिपकाया गया है, लेकिन निश्चित रूप से कुछ स्थानीय स्थितियों में संशोधित किया गया है।

खैर, यह ठीक काम कर रहा है, यानि कि एक बार एक TreeViewItem पर कर्सर मँडरा जो भी मान रहा ट्रिगर में चुना ट्रिगर किया जाता है, यह 'हाथ' है या 'रुको' वरना।

एक महत्वपूर्ण विस्तार हालांकि: कर्सर केवल जबकि, हैडर सीधे मँडरा प्रकट होता है अर्थात नहीं पूरी पंक्ति (हालांकि इस WPF TreeViewItem पंक्ति व्यवहार के अनुरूप है, पंक्ति हाइलाइटिंग के बारे में एक संबंधित उदाहरण के लिए here देखें)। विशेष रूप से कर्सर दिखाई देता है जब TeViewItem हेडर खाली होता है! क्या आपने अभी तक हेडर के लिए कोई डेटा उपलब्ध कराया है?

अन्यथा आपके प्रोजेक्ट/पर्यावरण में दृश्यों के पीछे उनका अजीब कुछ होना चाहिए? क्या आपने पहले से ही एक साधारण रेपो केस की कोशिश की है?