2013-01-15 13 views
11

मुझे अपनी Button पृष्ठभूमि (उदाहरण के लिए सॉलिडकोलरब्रश के रूप में) को बदलने की आवश्यकता है जब यह सक्षम नहीं है (IsEnabled == false)।
मैं कैसे कर सकता हूं?सक्षम नहीं होने पर बटन पृष्ठभूमि बदलें

क्या मैं XAML का उपयोग कर बटन Style को संशोधित करना चाहता हूं या क्या मैं प्रोग्राम को प्रोग्रामेटिक रूप से कर सकता हूं? सही XAML कोड क्या है, केवल पृष्ठभूमि को बदलने के लिए सक्षम होने पर?

मैं निम्नलिखित XAML कोड की कोशिश की, लेकिन यह कोई प्रभाव नहीं है:

<Button> 
<Button.Style> 
    <Style TargetType="Button"> 
     <Style.Triggers> 
      <Trigger Property="IsEnabled" Value="False"> 
       <Setter Property="Background" Value="Red"></Setter> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Button.Style> 
</Button> 
+1

इस आलेख को जांचें: http://www.infosysblogs.com/microsoft/2010/07/wpf_-_disabled_look_for_button.html – kmatyaszek

+0

यह क्यों काम नहीं करता है? क्या किसी को समझाया गया है? – SAT

उत्तर

-1

आप एक शैली ट्रिगर का उपयोग कर सकते हैं:

<Image.Style> 
    <Style> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding IsEnabled}" Value="False"> 
       <Setter Property="Image.Source" Value="pack://application:,,,/disabled.png" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</Image.Style> 
+2

क्यों छवि। स्टाइल? मुझे अपने बटन के सॉलिडकोलर ब्रश को बदलने की जरूरत है। – Nick

+0

बटन का उपयोग करें। छवि के बजाय बैकग्राउंड और मूल्य – chameleon86

+1

@ रंगमंच 86 में सेट रंग (या विशिष्ट ब्रश) @ hameleon86 यह कोड मेरे जैसा ही है, और यह काम नहीं करता .. – Nick

7

आप संपादन टेम्पलेट द्वारा पृष्ठभूमि बदल सकते हैं। आपको Buttonhere के लिए डिफ़ॉल्ट टेम्पलेट मिलेगा।

ट्रिगर में IsEnabled के लिए आप बस कुछ इस तरह जोड़ सकते हैं:

<Setter Property="Background" Value="{StaticResource DisabledBackgroundBrush}"/> 

संपादित: इस बजाय तो कोशिश करें,

<Window.Resources> 
    <Style TargetType="{x:Type Button}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="Button"> 
        <Border x:Name="Overlay" CornerRadius="2"> 
         <ContentPresenter/> 
        </Border> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsEnabled" Value="false"> 
          <Setter TargetName="Overlay" Property="Background" Value="Red"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 
<StackPanel> 
    <Button Content="Button" IsEnabled="False"/> 
</StackPanel> 

बस अपनी आवश्यकताओं के अनुरूप इसे बदलें।

+0

यह डिफ़ॉल्ट टेम्पलेट नहीं है। मुझे सही टेम्पलेट कहां मिल सकता है? – Nick

+0

आप किस संस्करण की तलाश में हैं? आप अन्य संस्करणों के लिए शीर्ष पर संस्करण को बदल सकते हैं। – Eirik

+0

मैं डिफ़ॉल्ट संस्करण की तलाश में हूं। जब मेरा बटन अक्षम होता है तो मैं केवल पृष्ठभूमि बदलना चाहता हूं। आपके द्वारा प्रदान किया गया लिंक एक शैली है जो मेरे बटन डिफ़ॉल्ट शैली को बदलता है। अपने आप को कोशिश करें .. – Nick

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