Comment supprimer complètement la bordure de bouton dans wpf?

j'essaie de créer un bouton qui a une image dedans et aucune frontière - tout comme les boutons de la barre D'outils Firefox avant que vous passez au-dessus d'eux et voir le bouton complet.

j'ai essayé de mettre le BorderBrush à Transparent , BorderThickness à 0 , et aussi essayé BorderBrush="{x:Null}" , mais vous pouvez encore voir le contour du bouton.

114
demandé sur Steven Jeuris 2009-06-15 16:08:01

8 réponses

Essayez cette

<Button BorderThickness="0"  
    Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" >...
228
répondu Simon 2010-06-02 11:47:51

vous pouvez avoir à changer le modèle de bouton, cela vous donnera un bouton sans cadre quoi que ce soit, mais aussi sans aucune pression ou effet désactivé:

    <Style x:Key="TransparentStyle" TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border Background="Transparent">
                        <ContentPresenter/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

et le bouton:

<Button Style="{StaticResource TransparentStyle}"/>
41
répondu Snehal 2014-10-06 14:03:47

Ce que vous avez à faire est de quelque chose comme ceci:

<Button Name="MyFlatImageButton"
        Background="Transparent"
        BorderBrush="Transparent"
        BorderThickness="0" 
        Padding="-4">
   <Image Source="MyImage.png"/>
</Button>

l'Espoir c'est ce que vous cherchez.

Edit: Désolé, j'ai oublié de mentionner que si vous voulez voir le bouton-frontière lorsque vous passez la souris sur l'image, tout ce que vous avez à faire est de sauter le Padding="-4" .

22
répondu Alfred B. Thordarson 2010-07-24 23:21:50

Je ne sais pas pourquoi d'autres n'ont pas fait remarquer que cette question est dupliquée par celle-ci avec la réponse acceptée .

je cite ici la solution: vous devez remplacer le ControlTemplate du Button :

<Button Content="save" Name="btnSaveEditedText" 
                Background="Transparent" 
                Foreground="White" 
                FontFamily="Tw Cen MT Condensed" 
                FontSize="30" 
                Margin="-280,0,0,10"
                Width="60"
                BorderBrush="Transparent"
                BorderThickness="0">
    <Button.Template>
        <ControlTemplate TargetType="Button">
             <ContentPresenter Content="{TemplateBinding Content}"/>
        </ControlTemplate>
    </Button.Template>  
</Button>
20
répondu Nam G VU 2017-05-23 10:31:33

vous pouvez utiliser L'hyperlien au lieu du bouton, comme ceci:

        <TextBlock>
            <Hyperlink TextDecorations="{x:Null}">
            <Image Width="16"
                   Height="16"
                   Margin="3"
                   Source="/YourProjectName;component/Images/close-small.png" />
            </Hyperlink>
        </TextBlock>
3
répondu Сергей Гусев 2014-01-04 13:46:04

vous savez peut-être déjà que mettre votre bouton à l'intérieur d'une barre d'outils vous donne ce comportement, mais si vous voulez quelque chose qui fonctionnera à travers tous les thèmes actuels avec toute sorte de prévisibilité, vous aurez besoin de créer un nouveau ControlTemplate.

la solution de Prashant ne fonctionne pas avec un bouton pas dans une barre d'outils lorsque le bouton A la mise au point. Il ne fonctionne pas non plus à 100% avec le thème par défaut dans XP -- vous pouvez toujours voir de légères frontières grises lorsque votre fond de conteneur est blanc.

2
répondu micahtan 2009-06-15 19:52:12

par programmation, vous pouvez faire ceci:

btn.BorderBrush = new SolidColorBrush(Colors.Transparent);
2
répondu Ricardo 2017-07-24 19:41:50

Pourquoi ne pas vous fixer à la fois Background & BorderBrush même brush

 <Style TargetType="{x:Type Button}" >
        <Setter Property="Background" Value="{StaticResource marginBackGround}"></Setter>
        <Setter Property="BorderBrush" Value="{StaticResource marginBackGround}"></Setter>            
 </Style>

<LinearGradientBrush  x:Key="marginBackGround" EndPoint=".5,1" StartPoint="0.5,0">
    <GradientStop Color="#EE82EE" Offset="0"/>
    <GradientStop Color="#7B30B6" Offset="0.5"/>
    <GradientStop Color="#510088" Offset="0.5"/>
    <GradientStop Color="#76209B" Offset="0.9"/>
    <GradientStop Color="#C750B9" Offset="1"/>
</LinearGradientBrush>
0
répondu Moumit 2015-12-18 10:31:26