首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >wpf文本框平面边框样式

wpf文本框平面边框样式
EN

Stack Overflow用户
提问于 2010-03-19 13:02:28
回答 3查看 39.2K关注 0票数 20

需要有基于wpf的文本框平面边框样式...非常惊讶地发现,没有像winforms textbox BorderStyle.FixedSingle中那样的简单方法来实现这一点

对于wpf文本框,有什么简单的方法可以做到这一点吗?

EN

回答 3

Stack Overflow用户

发布于 2011-10-18 08:15:25

执行此操作的方法是使用控件模板自己绘制边框。你可以用很多不同的方法来做这件事,这里有几个供你参考。

快速破解方法:

代码语言:javascript
复制
<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>

然后就是使用资源...

代码语言:javascript
复制
<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>

然后你可以使用样式:

代码语言:javascript
复制
<TextBox Style="{StaticResource ResourceKey=flatTextBox}" />
票数 19
EN

Stack Overflow用户

发布于 2010-03-19 13:32:04

代码语言:javascript
复制
<TextBox BorderThickness="1" BorderBrush="Black">

试一下黑色或灰色的

票数 7
EN

Stack Overflow用户

发布于 2018-07-27 10:52:09

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

最重要的是让ScrollViewer命名为PART_ContentHost,以适应内部的TemplatePart,并且对于任何其他功能都像默认一样工作。

MSDN中的示例相似

代码语言:javascript
复制
<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>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2475086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档