在c#中单击更改边框内图像的大小

时间:2017-07-23 12:23:26

标签: c# wpf

当我使用WidthHeight点击按钮时,如何在按钮内制作图像以使其变大。

我的按钮XAML代码是这样的:

<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 - 更改按钮的大小,而不是其中的图像。

我的C#代码:

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

2 个答案:

答案 0 :(得分:3)

不要附加Click事件处理程序,最好在Button IsPressed属性上使用Trigger:

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

答案 1 :(得分:-1)

最简单的解决方案是将x:Name =“input2Image”添加到Image元素,然后使用该名称放大图像,如下所示:

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

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

这应该可行,但您可以考虑开始使用Bindings和MVVM模式,以最大化WPF的功能。