2009-10-07 3 views
5
से नियंत्रण टेम्पलेट बदलने के लिए

मैं इसे इस तरह से किया है:कैसे Style.Triggers

<Style x:Key="Button" BasedOn="{StaticResource LoginButton}" TargetType="Button"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Button"> 
       <Grid> 
        <Border CornerRadius="4"> 
         <Border.Background> 
          <LinearGradientBrush EndPoint="0,1"> 
           <GradientStop Offset="0" Color="#0863a5" /> 
           <GradientStop Offset="1" Color="#00457d" /> 
          </LinearGradientBrush> 
         </Border.Background> 
        </Border> 
        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Style.Triggers> 
     <Trigger Property="IsEnabled" Value="false"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="Button"> 
         <Grid> 
          <Border CornerRadius="4"> 
           <Border.Background> 
            <LinearGradientBrush EndPoint="0,1"> 
             <GradientStop Offset="0" Color="#508fbd" /> 
             <GradientStop Offset="1" Color="#397ab0" /> 
            </LinearGradientBrush> 
           </Border.Background> 
          </Border> 
          <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

वहाँ यह करने के लिए किसी भी बेहतर तरीका है? मेरे पास ऐसे परिदृश्य हैं जहां मेरे नियंत्रण टेम्पलेट में कोड की अधिक रेखाएं हैं, और मुझे केवल एक ही शैली को बदलना होगा जैसे कि बॉर्डरब्रश या कुछ। मैं स्टाइल टेम्पलेट्स से कंट्रोल टेम्पलेट को कुशलतापूर्वक कैसे बदल सकता हूं?

उत्तर

4

यदि आपका इरादा सीमा पर एक अलग पृष्ठभूमि देने के लिए है। आप इसे ControlTemplate में प्राप्त कर सकते हैं। ट्रिगर्स

<Style x:Key="Button" BasedOn="{StaticResource LoginButton}" TargetType="Button"> 
    <Setter Property="Template"> 
    <Setter.Value> 
    <ControlTemplate > 
     <Grid> 
       <Border x:Name="brd" CornerRadius="4"> 
        <Border.Background> 
         <LinearGradientBrush EndPoint="0,1"> 
          <GradientStop Offset="0" Color="#0863a5" /> 
          <GradientStop Offset="1" Color="#00457d" /> 
         </LinearGradientBrush> 
        </Border.Background> 
       </Border> 
       <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
     </Grid> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsEnabled" Value="false"> 
       <Setter Property="Background" TargetName="brd"> 
       <Setter.Value> 
        <LinearGradientBrush EndPoint="0,1"> 
        <GradientStop Offset="0" Color="#508fbd" /> 
        <GradientStop Offset="1" Color="#397ab0" /> 
        </LinearGradientBrush> 
       </Setter.Value> 
       </Setter> 
      </Trigger> 
     </ControlTemplate.Triggers> 
     </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

ओह! मुझे नहीं पता था कि कंट्रोल टेम्पलेट में ट्रिगर्स भी हैं। कूल :-) – Raj

+7

क्या होगा यदि वह अपने नियंत्रण के लिए एक पूरी तरह से अलग टेम्पलेट चाहता था? –

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