如何在WPF中去除TextBox的边框?

29

输入图像描述

当它们被点击或悬停时,这些边框出现并且不会消失直到失去焦点。 四个方向都有边框,但由于它嵌入在一个较短的网格中,顶部和底部的边框不可见。 如何去除这些边框? 如果可能,请提供一个示例。

XAML:

<Border x:Name="SearchBorder" BorderThickness="1" HorizontalAlignment="Left" Height="40" Margin="672,34,0,0" VerticalAlignment="Top" Width="355" Background="#3F000000">
        <Border.BorderBrush>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#4C000000" Offset="0"/>
                <GradientStop Color="#3FFFFFFF" Offset="1"/>
            </LinearGradientBrush>
        </Border.BorderBrush>
        <Grid>
            <TextBox x:Name="SearchBox" HorizontalAlignment="Left" Height="40" Width="296" Margin="10,0,0,0" TextWrapping="Wrap" VerticalAlignment="Center"  SelectionBrush="Black" Background="#00000000" Foreground="#FF5B5B5B" FontSize="25" FontFamily="Segoe UI Light" BorderBrush="#00000000" CaretBrush="#FF6C6C6C"/>
            <TextBlock HorizontalAlignment="Left" Height="23" Margin="320,0,0,0" TextWrapping="Wrap" Text="&#xF002;" VerticalAlignment="Center" Width="21" FontFamily="FontAwesome" FontSize="25" Foreground="#FF919191"/>
            <Rectangle HorizontalAlignment="Left" Margin="311,-2,0,0" Width="1">
                <Rectangle.Stroke>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="#3F404040" Offset="0"/>
                        <GradientStop Color="#3F686868" Offset="1"/>
                        <GradientStop Color="#59DADADA" Offset="0.502"/>
                    </LinearGradientBrush>
                </Rectangle.Stroke>
            </Rectangle>
        </Grid>
    </Border>

那看起来不像是Combo的默认样式,如果您分享您的XAML样式和模板会很有帮助。 - almulo
xaml代码已发布。没有其他样式。 - Fᴀʀʜᴀɴ Aɴᴀᴍ
3
你尝试过使用BorderThickness="0"吗? - almulo
3个回答

73

尝试使用BorderThickness="0"

<TextBox x:Name="SearchBox" BorderThickness="0" HorizontalAlignment="Left" Height="40" Width="296" Margin="10,0,0,0" TextWrapping="Wrap" VerticalAlignment="Center"  SelectionBrush="Black" Background="#00000000" Foreground="#FF5B5B5B" FontSize="25" FontFamily="Segoe UI Light" BorderBrush="#00000000" CaretBrush="#FF6C6C6C"/>

5

您可以通过将BorderBrush属性设置为透明来去除边框。


4
很确定那样做行不通。请检查我的代码,确保在XAML中BorderBrush设置为#00000000。 - Fᴀʀʜᴀɴ Aɴᴀᴍ

1
将 BorderBrush 属性设置为 "Transparent"。
<Button Name="BtnTest"
        Content="Test"
        BorderBrush="Transparent"
        Height="20"
        Width="75"/>

悬停视图:当您用鼠标悬停在控件上时,请在Window.Resources标记下包含这些按钮或任何控件(如文本框或文本块)的控件模板。
<Window.Resources>
           <Style TargetType="Button">

                <!--Default Values-->
                <Setter Property="BorderBrush"
                        Value="Transparent"/>

                <!--Transparent Highlight-->
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="Button">
                            <Border Background="{TemplateBinding Background}">
                                <ContentPresenter HorizontalAlignment="Center" 
                                                  VerticalAlignment="Center"/>
                            </Border>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>

            </Style>
</Window.Resources>

1
将borderbrush属性设置为透明正好达到了我所需的效果。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接