【WPF系列】Textbox

Style

<Style x:Key="{x:Type TextBox}" TargetType="{x:Type TextBox}">
         <Setter Property="SnapsToDevicePixels" Value="True"/>
         <Setter Property="OverridesDefaultStyle" Value="True"/>
         <Setter Property="KeyboardNavigation.TabNavigation" Value="None"/>
         <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
         <Setter Property="MinWidth" Value="120"/>
         <Setter Property="MinHeight" Value="20"/>
         <Setter Property="AllowDrop" Value="true"/>
         <Setter Property="Template">
            <Setter.Value>
               <ControlTemplate TargetType="{x:Type TextBoxBase}">
               <Border x:Name="Border"
                     BorderThickness="1"
                     CornerRadius="2"
                     Padding="0">
                     <Border.BorderBrush>
                     <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
  <GradientStop Color="#888888" Offset="0" />
  <GradientStop Color="#AAAAAA" Offset=".2" />
</LinearGradientBrush>
                     </Border.BorderBrush>
                     <ScrollViewer x:Name="PART_ContentHost" Margin="0">
                        <ScrollViewer.Background>
                           <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                              <GradientStop Offset="0" Color="WhiteSmoke"/>
                              <GradientStop Offset="1" Color="LightGray"/>
                           </LinearGradientBrush>
                        </ScrollViewer.Background>
                     </ScrollViewer>
                  </Border>

                  <ControlTemplate.Triggers>
                     <Trigger Property="IsEnabled" Value="False">
                        <Setter TargetName="Border" Property="Background" Value="#EEEEEE"/>
                        <Setter TargetName="Border" Property="BorderBrush" Value="#EEEEEE"/>
                        <Setter Property="Foreground" Value="#888888"/>
                     </Trigger>
                  </ControlTemplate.Triggers>
               </ControlTemplate>
            </Setter.Value>
         </Setter>
      </Style>

 

UpdateSourceTrigger

 

 

NumberTextbox

  1. 使用NubmberTextboxBehavior
  2. 将TextBox的binding属性中Delay设置为1000

 

 

WaterMark/HintText/PlaceHoder

 

 

 

 

参考

WPF validation rule preventing decimal entry in textbox?

Set WPF Binding.StringFormat Property on TextBox via Style

时间: 2024-10-14 16:43:55

【WPF系列】Textbox的相关文章

自学WPF系列(1)

介绍 使用WPF工作6个多月了,是时候写一些WPF的基础知识了.在这个主题上我已经写了几篇文章了.他们都是基于处理一些具体的问题而完成的.现在我抛砖引玉,并让您理解如何/为什么WPF作为革命性的UI开发走向了我们. 由于这是一篇适合初学者和中级水平的程序员的文章,我将尽量给出尽可能多的基本的例子. Windows Presectation Foundation 正如名字所示,WPF实际上是.NET Framework3.0引入的几个framework.它实际上是提出了一套新的类和程序集并允许我们

WPF系列之二:解耦View层控件事件与ViewModel层事件的响应

以前的做法: 1.当项目的时间比较紧迫的时候,对UI层中控件的事件的处理,往往采取的是类似Winform中最简单的做法,直接做一个事件的Handler直接去调用VM层的方法. 2.控件只有一个Command属性,其它的事件的处理方法没有办法和ViewModel层进行解耦的时候往往也采取上面提到的方法. 如下图所示: 新的做法: 为了实现事件的处理与View层的解耦,我们可以利用WPF提供的附加属性来为需要的事件添加附加行为.附加属性扮演了一个在View层与Model层牵线的角色. 需要下面三个步

解决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系列之三:实现类型安全的INotifyPropertyChanged接口,可以不用“Magic string” 么?

通常实现INotifyPropertyChanged接口很简单,为你的类只实现一个PropertyChanged 的Event就可以了. 例如实现一个简单的ViewModel1类: public class ViewModel1 : INotifyPropertyChanged { private string _data; public string Data { get { return _data; } set { if (_data == value) return; _data = v

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系列]-DataBinding(数据绑定)

自定义Binding A base class for custom WPF binding markup extensions BindingDecoratorBase Code: public class LookupExtension : BindingDecoratorBase { //A property that can be set in XAML public string LookupKey { get; set; } public override object Provid

[WPF系列]-数据邦定之DataTemplate 对分层数据的支持

到目前为止,我们仅讨论如何绑定和显示单个集合. 某些时候,您要绑定的集合包含其他集合. HierarchicalDataTemplate 类专用于 HeaderedItemsControl 类型以显示这样的数据. 实例演示 在下面的示例中,ListLeagueList 是 League 对象的列表. 每个 League 对象都有一个 Name 和 Division 对象的集合. 每个 Division 都有一个 Name 和 Team 对象的集合,并且每个 Team 对象都有一个 Name. <