2017-07-23 3 views
-1

Wie kann ich ein Bild in Button um es größer zu machen, wenn ich es mit Width und Height.Ändern Sie die Größe eines Bildes innerhalb der Grenze bei Klick in C#

My Button XAML-Code ist dies:

<Button x:Name="Input2" Grid.Row="0" MouseEnter="Input2_MouseEnter" MouseLeave="Input2_MouseLeave" Click="Input2_Click" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="{x:Null}"> 
      <Button.Template> 
       <ControlTemplate> 
        <Border HorizontalAlignment="Center" VerticalAlignment="Center" > 
         <Image Source= "C:\input.png" 
          Width="40" 
          Height="40"/> 
        </Border> 
       </ControlTemplate> 
      </Button.Template> 
</Button> 

Input2.Height - Ändern Sie die Größe der Schaltfläche, nicht das Bild in seinem Inneren.

Mein C# -Code:

private void Input2_Click(object sender, RoutedEventArgs e) 
{ 
    // What to do here? 
} 
+1

Wie würde die Größe zurückgesetzt werden? Oder möchten Sie das Bild in der Größe nach dem ersten Klick beibehalten? Was Sie wahrscheinlich wollen, ist ein Trigger auf der IsPressed-Eigenschaft des Buttons. – Clemens

+0

@Clemens Ich werde es zurücksetzen, ich muss nur wissen, wie kann ich die Größe ändern ... –

Antwort

3

Statt einen Click-Ereignishandler für die Befestigung, besser, einen Trigger auf der IsPressed Eigenschaft der Schaltfläche verwenden:

<Button> 
    <Button.Template> 
     <ControlTemplate TargetType="Button"> 
      <Border> 
       <Image x:Name="image" Width="40" Height="40" Source="C:\input.png"/> 
      </Border> 
      <ControlTemplate.Triggers> 
       <Trigger Property="IsPressed" Value="True"> 
        <Setter TargetName="image" Property="Width" Value="50"/> 
        <Setter TargetName="image" Property="Height" Value="50"/> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Button.Template> 
</Button> 
+0

Wie kann ich es zurück ändern? –

+1

Es wird automatisch zurückgesetzt, sobald die IsPressed-Eigenschaft der Schaltfläche auf false zurückgesetzt wird. – Clemens

+0

Ich möchte das nicht automatisch wieder ändern, ich möchte zu meinen Konditionen. –

-1

Die einfachste Lösung wird x hinzuzufügen: Name = "input2Image" auf das Bildelement, und das Bild zu vergrößern diesen Namen verwenden, wie folgt aus:

<Button x:Name="Input2" Grid.Row="0" MouseEnter="Input2_MouseEnter" MouseLeave="Input2_MouseLeave" Click="Input2_Click" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="{x:Null}"> 
     <Button.Template> 
      <ControlTemplate> 
       <Border HorizontalAlignment="Center" VerticalAlignment="Center" > 
        <Image x:Name="Input2Image" Source= "C:\input.png" 
         Width="40" 
         Height="40"/> 
       </Border> 
      </ControlTemplate> 
     </Button.Template> 

Und:

private void Input2_Click(object sender, RoutedEventArgs e) 
{ 
    this.Input2Image.Height = 80; 
    this.Input2Image.Width = 80; 
} 

Dies sollte funktionieren, aber Sie sollten in Betracht ziehen, Bindungen und das MVVM-Muster zu verwenden, um die Leistung von WPF zu maximieren.

+0

Es funktioniert nicht –

+0

@Clemens Dennoch könnte er einen Konverter oder Trigger verwendet haben, die die Daten auf der View-Seite darstellen, und haben immer noch eine Eigenschaft auf der Modellseite. –

Verwandte Themen