wpf文本框平面边框样式

时间:2010-03-19 05:02:28

标签: wpf textbox styles

需要为基于wpf的文本框设置平面边框样式...真的很惊讶地发现没有简单的方法可以像winforms文本框中那样使用BorderStyle.FixedSingle

是否有任何简单的方法可以为wpf文本框

完成此操作

3 个答案:

答案 0 :(得分:17)

执行此操作的方法是使用控件模板自行绘制边框。你可以通过许多不同的方式做到这一点,有几个让你看看。

快速入侵方法:

<TextBox>
    <TextBox.Template>
        <ControlTemplate TargetType="{x:Type TextBox}">
            <Grid>
                <Rectangle  Stroke="{StaticResource ResourceKey=detailMarkBrush}" StrokeThickness="1"/>
                <TextBox Margin="1" Text="{TemplateBinding Text}" BorderThickness="0"/>
            </Grid>
        </ControlTemplate>
    </TextBox.Template>
</TextBox>

然后使用资源......

<ResourceDictionary>
    <Color x:Key="detailMark">#FFA1A9B3</Color>
    <SolidColorBrush x:Key="detailMarkBrush" Color="{StaticResource ResourceKey=detailMark}" />
    <Style x:Key="flatTextBox" TargetType="{x:Type TextBox}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TextBox}">
                    <Grid>
                        <Rectangle  Stroke="{StaticResource ResourceKey=detailMarkBrush}" StrokeThickness="1"/>
                        <TextBox Margin="1" Text="{TemplateBinding Text}" BorderThickness="0"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

然后你可以使用样式:

<TextBox Style="{StaticResource ResourceKey=flatTextBox}" />

答案 1 :(得分:6)

<TextBox BorderThickness="1" BorderBrush="Black">

只需尝试黑色或灰色

答案 2 :(得分:0)

对我来说,这是一种更好的方法,制作一个带有边框的自定义模板,以覆盖默认模板。

最重要的是,将ScrollViewer命名为PART_ContentHost,以适合内部TemplatePart,并且对于其他任何功能,如默认设置一样工作。

MSDN中的示例类似:

<Style TargetType="TextBox">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TextBoxBase}">
                <Border CornerRadius="2" Padding="2" Background="#19212F" BorderBrush="Red" BorderThickness="1">
                    <ScrollViewer Margin="0" x:Name="PART_ContentHost" />
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>