需要为基于wpf的文本框设置平面边框样式...真的很惊讶地发现没有简单的方法可以像winforms文本框中那样使用BorderStyle.FixedSingle
是否有任何简单的方法可以为wpf文本框
完成此操作答案 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>