Image fill the space on the button in WPF

后端 未结 4 1594

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

相关标签:
4条回答
  • 2021-01-20 06:11

    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

    0 讨论(0)
  • 2021-01-20 06:17

    Try setting HorizontalAlignment and VerticalAlignment to Stretch and Dock to Fill.

    0 讨论(0)
  • 2021-01-20 06:25

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

    0 讨论(0)
  • 2021-01-20 06:35

    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>
    
    0 讨论(0)
提交回复
热议问题