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 fil
Set HorizontalContentAlignment
and VerticalContentAlignment
Properties of the Button
to be Stretch
:
<telerik:RadButton Height="25" Width="40"
HorizontalContentAlignment="Stretch" //this
VerticalContentAlignment="Stretch" //and this
Margin="417,10,0,0"
Name="radButton1" VerticalAlignment="Top" Click="UpButtonClick">
<telerik:RadButton.Content>
<StaticResource ResourceKey="MyResource"/>
</telerik:RadButton.Content>
</telerik:RadButton>
See this question and this link for more
Try setting HorizontalAlignment
and VerticalAlignment
to Stretch
and Dock
to Fill
.
The solution with the Button.Background worked for me only in the vertical direction (the button was shown as a 3 pixel wide vertical slice), because I needed to fit the refresh button on the right side into a horizontal Grid
container as shown in this screenshot:
So, I ended up binding the Width
to the ActualHeight
property and everthing's looking good to me:
<Button Name="RefreshButton"
Width="{Binding ElementName=RefreshButton,Path=ActualHeight}"
Margin="3"
Padding="3"
VerticalAlignment="Stretch"
HorizontalAlignment="Right"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
>
<Button.Background>
<ImageBrush ImageSource="{StaticResource ICON_Refresh}"/>
</Button.Background>
</Button>
The resource I used is an ICO file so the image should be looking good in different sizes and imaging should still be very fast...
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>