Próbuję utworzyć przycisk, który ma obraz i nie ma obramowania - tak jak przyciski paska narzędzi Firefoksa, zanim najedziesz na nie kursorem i zobaczysz pełny przycisk.
Próbowałem ustawić BorderBrush
to Transparent
, BorderThickness
to 0
, a także próbowałem BorderBrush="{x:Null}"
, ale nadal możesz zobaczyć kontur przycisku.
wpf
button
transparency
Steven Jeuris
źródło
źródło
Odpowiedzi:
Spróbuj tego
<Button BorderThickness="0" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" >...
źródło
HorizontalContentAlignment
naStretch
.Być może będziesz musiał zmienić szablon przycisku, dzięki temu otrzymasz przycisk bez ramki, ale także bez żadnego efektu naciśnięcia lub wyłączenia:
<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>
I przycisk:
<Button Style="{StaticResource TransparentStyle}"/>
źródło
<Button Style="{StaticResource TransparentButton}"/>
powinno być<Button Style="{StaticResource TransparentStyle}"/>
Musisz zrobić coś takiego:
<Button Name="MyFlatImageButton" Background="Transparent" BorderBrush="Transparent" BorderThickness="0" Padding="-4"> <Image Source="MyImage.png"/> </Button>
Mam nadzieję, że właśnie tego szukałeś.
Edycja: Przepraszamy, zapomniałem wspomnieć, że jeśli chcesz zobaczyć ramkę przycisku po najechaniu kursorem na obraz, wszystko, co musisz zrobić, to pominąć Padding = "- 4" .
źródło
BorderThickness="0"
wystarczyNie wiem, dlaczego inni nie wskazali, że to pytanie jest powtórzone z tym z akceptowaną odpowiedzią .
Cytuję tutaj rozwiązanie: Musisz nadpisać
ControlTemplate
zButton
:<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>
źródło
Możesz użyć hiperłącza zamiast przycisku, na przykład:
<TextBlock> <Hyperlink TextDecorations="{x:Null}"> <Image Width="16" Height="16" Margin="3" Source="/YourProjectName;component/Images/close-small.png" /> </Hyperlink> </TextBlock>
źródło
Być może już wiesz, że umieszczenie przycisku wewnątrz paska narzędzi zapewnia takie zachowanie, ale jeśli chcesz, aby coś działało we WSZYSTKICH aktualnych motywach z jakąkolwiek przewidywalnością, musisz utworzyć nowy ControlTemplate.
Rozwiązanie Prashanta nie działa z przyciskiem nie znajdującym się na pasku narzędzi, gdy przycisk ma fokus. Nie działa również w 100% z domyślnym motywem w XP - nadal możesz zobaczyć słabe szare ramki, gdy tło kontenera jest białe.
źródło
Programowo możesz to zrobić:
btn.BorderBrush = new SolidColorBrush(Colors.Transparent);
źródło
Dlaczego nie ustawisz obu tak
Background & BorderBrush
samobrush
<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>
źródło