WPF

2009-10-07 15 views
11

में किसी बटन के सक्षम और अक्षम राज्यों के लिए अलग-अलग छवियां मैं अपने राज्य के आधार पर नीचे दिए गए कोड में बटन की छवि को बदलना चाहता हूं यानी सक्षम और अक्षम राज्य के लिए अलग-अलग छवि का उपयोग करना चाहता हूं।WPF

<Button CommandParameter="Open" > 
    <StackPanel Orientation="Horizontal" > 
     <Image Source="../icons/big/open.png" Width="20" Height="20"></Image> 
    </StackPanel> 
</Button> 

धन्यवाद।

उत्तर

0

, बटन जो इसे अपनी सामग्री संपत्ति में एक छवि वस्तु को प्रदर्शित करता है के लिए एक शैली बनाने को देखने का प्रयास करें, और फिर एक ट्रिगर जो बटन सक्षम राज्य की जांच करे, और जब यह सच है कि यह एक छवि हो, और दूसरी बार दूसरी छवि हो।

10

आप इस तरह चलाता के साथ एक शैली का उपयोग कर सकते हैं:

<Style TargetType="{x:Type Button}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <StackPanel Orientation="Horizontal" > 
        <Image Name="PART_Image" Source="path to normal image" /> 
       </StackPanel> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="Source" Value="path to mouse over image" TargetName="PART_Image"/> 
        </Trigger> 
        <Trigger Property="IsPressed" Value="True"> 
         <Setter Property="Source" Value="path to pressed image" TargetName="PART_Image"/> 
        </Trigger> 
        <Trigger Property="IsEnabled" Value="False"> 
         <Setter Property="Source" Value="path to disabled image" TargetName="PART_Image"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

क्या फ्लाई पर छवियां उत्पन्न करने के लिए किसी प्रकार के ग्रेइंग-आउट फ़िल्टर (और अन्य) का उपयोग करने का कोई तरीका नहीं है? क्या हमें अलग-अलग राज्यों की अनिवार्य रूप से हार्ड-कोडित छवियां रखना है? –

+2

हां, आप ऊपर वर्णित वही तर्क का उपयोग कर सकते हैं और छवि की अस्पष्टता संपत्ति को बदल सकते हैं। आप टेम्पलेट में सीमा जोड़ने जैसे चीजों को भी कर सकते हैं और जब माउस छवि पर है, तो उसे दिखाएं/छुपाएं, या पृष्ठभूमि रंग बदलें ... –

+0

@MalRoss - इस कोडप्रोजेक्ट आलेख को देखें, जो दिखाता है कि आप कैसे उपयोग कर सकते हैं फ्लाई पर एक अक्षम छवि बनाने के लिए मूल्य कनवर्टर। मैं आपके साथ हूं, कि WinForms मुफ्त में करने वाली चीजों को करने के लिए कोड लिखना निराशाजनक है, लेकिन कम से कम आपको छवियों को प्री-जेन करने की आवश्यकता नहीं है। http://www.codeproject.com/KB/WPF/GrayscaleButton.aspx – kbrimington

8

मैं जब बटन अक्षम है और यह बहुत अच्छा काम करता है आधा अस्पष्टता के लिए बटन के अंदर छवियों बनाने के लिए निम्नलिखित कोड का इस्तेमाल किया!

<Style TargetType="Button"> 
    <Style.Resources> 
     <Style TargetType="Image"> 
      <Style.Triggers> 
       <Trigger Property="IsEnabled" Value="False"> 
        <Setter Property="Opacity" Value="0.5" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Style.Resources> 
</Style>