无棣网站定制,做网站获取ip,一流的句容网站建设,wordpress制作公司WPF里TextBox没有placeholder#xff0c;需要自己实现#xff0c;本篇博客介绍WPF TextBox实现placeholder#xff0c;效果如下#xff1a; 实现技巧是在 TextBox 控件的 Style 中使用触发器#xff08;Triggers#xff09;来显示和隐藏placeholder文本。xmal代码如下需要自己实现本篇博客介绍WPF TextBox实现placeholder效果如下 实现技巧是在 TextBox 控件的 Style 中使用触发器Triggers来显示和隐藏placeholder文本。xmal代码如下
Window x:ClassWpfApp_TextBox.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:dhttp://schemas.microsoft.com/expression/blend/2008xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006xmlns:localclr-namespace:WpfApp_TextBoxmc:IgnorabledTitleMainWindow Height461 Width837GridCanvas!--设置placeholder--TextBox x:NameuserName Width240 Height36 FontSize16 Canvas.Left20 Canvas.Top20TextBox.StyleStyle TargetTypeTextBoxSetter PropertyTemplateSetter.ValueControlTemplate TargetTypeTextBoxGridTextBox x:NametextSource Text{Binding Text, RelativeSource{RelativeSource TemplatedParent}} BackgroundTransparent Padding5/TextBlock IsHitTestVisibleFalse TextEnter text here... ForegroundGray Padding5TextBlock.StyleStyle TargetTypeTextBlockSetter PropertyVisibility ValueCollapsed/Style.TriggersDataTrigger Binding{Binding Text, Source{x:Reference textSource}} ValueSetter PropertyVisibility ValueVisible//DataTrigger/Style.Triggers/Style/TextBlock.Style/TextBlock/Grid/ControlTemplate/Setter.Value/Setter/Style/TextBox.Style/TextBox!--WPF 中的 TextBox 控件可以设置为自动换行。你可以通过设置 TextBox 的 TextWrapping 属性为 Wrap 来实现这个功能。当 TextWrapping 属性设置为 Wrap 时 TextWrappingWrap, TextBox 会在文本达到边界时自动换行。--TextBox Width200 Height80 Canvas.Left20 Canvas.Top100 VerticalScrollBarVisibilityAutoTextWrappingWrapWithOverflowAcceptsReturnTrueScrollViewer.CanContentScrollTrue/TextBox x:NameUsernameTextBox Width200 Height30 FontSize18 VerticalAlignmentTop HorizontalAlignmentLeft VerticalContentAlignmentCenter Canvas.Left20 Canvas.Top220TextBox.TemplateControlTemplate TargetTypeTextBoxBorder BackgroundWhite BorderBrushGray BorderThickness1GridGrid.ColumnDefinitionsColumnDefinition WidthAuto /ColumnDefinition Width* //Grid.ColumnDefinitionsImage Grid.Column0 Source/Assets/Images/user.png Width20 Height20 Margin5,0,0,0 /ScrollViewer x:NamePART_ContentHost Grid.Column1 /!--这里Margin可以调整文字的位置--TextBlock Grid.Column1 TextEnter username... IsHitTestVisibleFalse ForegroundLightGray Margin5,2,0,0TextBlock.StyleStyle TargetTypeTextBlockSetter PropertyVisibility ValueCollapsed /Style.TriggersDataTrigger Binding{Binding Text, ElementNameUsernameTextBox} ValueSetter PropertyVisibility ValueVisible //DataTrigger/Style.Triggers/Style/TextBlock.Style/TextBlock/Grid/Border/ControlTemplate/TextBox.Template/TextBoxButton ContentButton HorizontalAlignmentLeft Canvas.Left20 Canvas.Top320 VerticalAlignmentTop Height41 Width122 ClickButton_Click//Canvas/Grid
/Window需要注意的是文本的上下边距如果有蓝湖设计图写起来会很容易比如上面代码中使用Margin调整上边距 Font属性
FontSize18TextBlock的Margin属性
!--这里Margin可以调整文字的位置--
TextBlock Grid.Column1 TextEnter username... IsHitTestVisibleFalse ForegroundLightGray Margin5,2,0,0经过这样调整后placeholder的内容才比能竖直居中显示。