[WPF] 圆角TextBox

使用Blend编辑TextBox的Template,将其中的ListBoxChrome修改为Border。

 1 <Application.Resources>
 2     <LinearGradientBrush x:Key="TextBoxBorder" EndPoint="0,20" MappingMode="Absolute" StartPoint="0,0">
 3       <GradientStop Color="#ABADB3" Offset="0.05"/>
 4       <GradientStop Color="#E2E3EA" Offset="0.07"/>
 5       <GradientStop Color="#E3E9EF" Offset="1"/>
 6     </LinearGradientBrush>
 7     <Style x:Key="CornetTextBoxStyle" BasedOn="{x:Null}" TargetType="{x:Type TextBox}">
 8       <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
 9       <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/>
10       <Setter Property="BorderBrush" Value="{StaticResource TextBoxBorder}"/>
11       <Setter Property="BorderThickness" Value="1"/>
12       <Setter Property="Padding" Value="1"/>
13       <Setter Property="AllowDrop" Value="true"/>
14       <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
15       <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/>
16       <Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
17       <Setter Property="Template">
18         <Setter.Value>
19           <ControlTemplate TargetType="{x:Type TextBox}">
20             <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true" CornerRadius="5">
21               <ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
22             </Border>
23             <ControlTemplate.Triggers>
24               <Trigger Property="IsEnabled" Value="false">
25                 <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
26                 <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
27               </Trigger>
28             </ControlTemplate.Triggers>
29           </ControlTemplate>
30         </Setter.Value>
31       </Setter>
32       <Style.Triggers>
33         <MultiTrigger>
34           <MultiTrigger.Conditions>
35             <Condition Property="IsInactiveSelectionHighlightEnabled" Value="true"/>
36             <Condition Property="IsSelectionActive" Value="false"/>
37           </MultiTrigger.Conditions>
38           <Setter Property="SelectionBrush" Value="{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightBrushKey}}"/>
39         </MultiTrigger>
40       </Style.Triggers>
41     </Style>
42   <!-- Resources scoped at the Application level should be defined here. -->
43 </Application.Resources>
时间: 2024-11-20 09:05:49

[WPF] 圆角TextBox的相关文章

wpf 圆角TextBox 样式

<Style x:Key="RoundCornerTextStyle" TargetType="{x:Type TextBox}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type TextBox}"> <Border x:Name="border&q

解决WPF中TextBox文件拖放问题

在WPF中,当我们尝试向TextBox中拖放文件,从而获取其路径时,往往无法成功(拖放文字可以成功).造成这种原因关键是WPF的TextBox对拖放事件处理机制的不同,具体可参考这篇文章Textbox Drag/Drop in WPF,本文只是介绍如何解决这一问题. 解放方法如下: 使用PreviewDragOver和PreviewDrop事件代替DragOver和Drop事件. <TextBox Height="100″ PreviewDragOver="TextBox_Pre

WPF的TextBox产生内存泄露的情况

前段时间参与了一个WPF编写的项目,在该项目中有这样一个场景:在程序运行过程中需要动态地产生大量文本信息,并追加WPF界面上的一个TextBox的Text中进行显示.编写完之后,运行该项目的程序,发现在产生大量信息之后,发现系统变慢了,打开任务管理器才发现,该项目的程序占用了将近1.5G的内存(天啊!!!这不是一般的耗内存啊!!!).后来通过查资料和探索才发现了WPF的TextBox在追加Text显示文本时会造成内存泄露.下面通过一个小Demo程序来展示一下这个内存泄露. 我的Demo程序很简单

WPF 设置TextBox为空时,背景为文字提示。

<TextBox FontSize="17" Height="26" Margin="230,150,189,0" Name="txt_Account" VerticalAlignment="Top" Foreground="Indigo" TabIndex="0" BorderThickness="1"> <TextBox.Re

WPF 自定义TextBox

1.TextBox前加图标. 效果: <TextBox Width="300" Height="30" Style="{StaticResource TXTSTYLE}"> <TextBox.Background> <ImageBrush ImageSource="uri" /> </TextBox.Background></TextBox> <Style x:

Wpf解决TextBox文件拖入问题、拖放问题

在WPF中,当我们尝试向TextBox中拖放文件,从而获取其路径时,往往无法成功(拖放文字可以成功).造成这种原因关键是WPF的TextBox对拖放事件处理机制的不同, 解放方法如下: 使用PreviewDragOver和PreviewDrop事件代替DragOver和Drop事件. <TextBox Height="100" PreviewDragOver="TextBox_PreviewDragOver" PreviewDrop="TextBox

WPF中textbox加入文件拖放操作

namespace WpfApplication1{ public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void textbox1_PreviewDragOver(object sender, DragEventArgs e) { e.Effects = DragDropEffects.Copy; e.Handled = true; } private

WPF 禁用TextBox的触摸后自动弹出虚拟键盘

原文:WPF 禁用TextBox的触摸后自动弹出虚拟键盘 前言 & 问题 如下截图,TextBox,在触摸点击后,会自动弹出windows的虚拟键盘. 如何,禁用键盘的自动弹出? 调用虚拟键盘 通过调用TapTip.exe或者osk.exe,主动弹出虚拟键盘 详细调用可参考:c#调用windows虚拟键盘 如何禁用键盘的弹出 TextBox在触摸点击后,会自动弹出虚拟键盘,是因为在控件中作了封装. --TextBox中详细TabTip.exe封装看了会,没找到 处理方案:重写TextBox的方法

[WPF]实现TextBox文本框单击全选

原文:[WPF]实现TextBox文本框单击全选 /// <summary> /// Void:设置获取焦点时全选文本 /// </summary> /// <param name="textbox">指定文本框</param> public void SetSelectionAllOnGotFocus(TextBox textbox) { MouseButtonEventHandler _OnPreviewMouseDown = (se