2010-12-17 10 views
14

मैं, ब्लॉक स्थापित करने के लिए इसलिए इसकी अग्रभूमि रंग हर बार माउस कर्सर इस पर चला जाता है बदल जाएगा कोशिश कर रहा हूँ पर एक TextBlock अग्रभूमि स्थापित करने के लिए और यह मेरा कोड है:एक ट्रिगर का उपयोग माउसओवर

<TextBlock Foreground="blue" Margin="18,234,5,-2" Grid.RowSpan="3"> 
    <Underline>Remove Message</Underline> 
    <TextBlock.Style> 
     <Style TargetType="TextBlock"> 
      <Style.Triggers> 
       <Trigger Property ="IsMouseOver" Value="True"> 
        <Setter Property= "Foreground" Value="Red"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 

जब मैं सेटर संपत्ति को किसी अन्य को बदलने का प्रयास करें, उदाहरण के लिए FontSize="30", घटना होती है।

उत्तर

39

ऐसा इसलिए है क्योंकि नियंत्रण में सेट गुण स्टाइल में परिभाषित एक को ओवरराइड करते हैं, इसलिए आपका Foreground = "blue" शैली में जो कुछ भी सेट करता है उसे ओवरराइड करेगा। इसे ठीक करने के लिए, आप शैली में अग्रभूमि = "नीला" स्थानांतरित कर सकते हैं और इसे नियंत्रण के गुणों से हटा सकते हैं।

<TextBlock Margin="18,234,5,-2" Grid.RowSpan="3"> 
     <Underline>Remove Message</Underline> 
     <TextBlock.Style> 
      <Style TargetType="TextBlock"> 
       <Setter Property= "Foreground" Value="Blue"/> 
       <Style.Triggers> 
        <Trigger Property ="IsMouseOver" Value="True"> 
         <Setter Property= "Foreground" Value="Red"/> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </TextBlock.Style> 
</TextBlock> 
+0

धन्यवाद !!!!! –

+0

आप फोकस या दबाए गए पर यह कैसे करेंगे? या क्या टेक्स्टब्लॉक पर ये संभव हैं? – ClosDesign

+0

यह टेक्स्टब्लॉक को फोकस या दबाए जाने के लिए बहुत अधिक समझ में नहीं आता है। अन्य UIElements के लिए, जैसे कि बटन, जिसे फोकस या दबाया जाना समझ में आता है, दबाए जाने के लिए आप Ispressed प्रॉपर्टी (IsMouseOver के बजाय) का उपयोग कर सकते हैं। फोकस के लिए, अन्य तरीके हैं (फोकसविज़ुअल स्टाइल देखें) –

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