2009-10-07 4 views
5

Ich habe es so gemacht:Wie Steuervorlage von Style.Triggers ändern

<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> 

Gibt es einen besseren Weg, dies zu tun? Ich habe Szenarien, in denen meine Steuerelementvorlage mehr Codezeilen enthält und ich nur einen einzelnen Stil wie BorderBrush oder etwas ändern müsste. Wie kann ich die Kontrollvorlage von Style.Triggers effizient ändern?

Antwort

4

Wenn Sie nur einen anderen Hintergrund für die Grenze geben möchten. Dies erreichen Sie in der ControlTemplate.Triggers

<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

Hoppla! Ich kannte ControlTemplate auch nicht mit Triggern. Cool :-) – Raj

+7

was ist, wenn er eine komplett andere Vorlage für seine Kontrolle wollte? –

Verwandte Themen