Search code examples
wpfimagexamlbuttontelerik

Image fill the space on the button in WPF


I have Button on my WPF app and I want an Image to fill the Button completely. Currently I have The following code and it does not fill the Button.

<Image x:Key="MyResource" Source="Images/up-arrow-icon.jpg" Margin="0" />

<telerik:RadButton  Height="25" Width="40" HorizontalAlignment="Left" Margin="417,10,0,0" 
                    Name="radButton1" VerticalAlignment="Top" Click="UpButtonClick">
    <telerik:RadButton.Content>
        <StaticResource ResourceKey="MyResource"/>
    </telerik:RadButton.Content>
</telerik:RadButton>

Do I need resize the Image outside WPF then use it?


Solution

  • You can try changing your Image to an ImageBrush and then assign that to your BackGround your image will then stretch over the inner surface of your button.

    <Window x:Class="WpfApplication1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <ImageBrush x:Key="MyResource" ImageSource="C:\temp\test.jpg" />
        </Window.Resources>
        <Grid>
            <Button Height="25" Background="{StaticResource MyResource}" Width="40" HorizontalAlignment="Left" Margin="417,10,0,0" VerticalAlignment="Top"/>
        </Grid>
    </Window>
    

    or add a TextBlock to your Button Content and assign your Image as a BackGround to it.

    <Window.Resources>
        <ImageBrush x:Key="MyResource" ImageSource="C:\temp\test.jpg" />
    </Window.Resources>
    <Grid>
        <Button Height="25"  Width="40" HorizontalAlignment="Left" Margin="417,10,0,0" VerticalAlignment="Top">
            <Button.Content>
                <TextBlock HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="34" Height="19" Margin="0">
                    <TextBlock.Background>
                        <StaticResource ResourceKey="MyResource"/>
                    </TextBlock.Background>
                </TextBlock>
            </Button.Content>
        </Button>
    </Grid>