Reputation: 377
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?
Upvotes: 3
Views: 19224
Reputation: 1061
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...
Upvotes: 0
Reputation: 2133
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
Upvotes: 2
Reputation: 2078
Try setting HorizontalAlignment
and VerticalAlignment
to Stretch
and Dock
to Fill
.
Upvotes: 1
Reputation: 54532
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>
Upvotes: 8