最牛网站设计公司,上海怎么建设网站,佛山网站建设 奇锐科技,优秀网页制作模板WPF 搜索框控件样式
完全通过Xaml代码实现#xff0c;使用了UserControl进行封装。功能包括聚焦时控件展开#xff0c;输入为空时的文字提示#xff0c;以及待选提示项列表等效果。实现效果如下图#xff1a; xaml代码
UserControl x:ClassSearchBar.SearchBo…WPF 搜索框控件样式
完全通过Xaml代码实现使用了UserControl进行封装。功能包括聚焦时控件展开输入为空时的文字提示以及待选提示项列表等效果。实现效果如下图 xaml代码
UserControl x:ClassSearchBar.SearchBoxxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006 xmlns:dhttp://schemas.microsoft.com/expression/blend/2008 xmlns:localclr-namespace:SearchBarUseLayoutRoundingTrueTextElement.FontSize14mc:Ignorabled d:DesignHeight450 d:DesignWidth440UserControl.ResourcesSolidColorBrush x:KeyControl.BoderBrush Color#CBCBCB/Style TargetType{x:Type TextBox}Setter PropertyBackground Value#FFF2F3F4/Setter PropertyBorderBrush Value{StaticResource Control.BoderBrush}/Setter PropertyForeground Value#515151/Setter PropertyVerticalContentAlignment ValueCenter/Setter PropertyPadding Value8 0 0 0/Setter PropertyBorderThickness Value1/Setter PropertyKeyboardNavigation.TabNavigation ValueNone/Setter PropertyHorizontalContentAlignment ValueLeft/Setter PropertyAllowDrop Valuetrue/Setter PropertyScrollViewer.PanningMode ValueVerticalFirst/Setter PropertyStylus.IsFlicksEnabled ValueFalse/Setter PropertyTemplateSetter.ValueControlTemplate TargetType{x:Type TextBox}Border x:Nameborder CornerRadius8 Background{TemplateBinding Background} BorderBrush{TemplateBinding BorderBrush} BorderThickness{TemplateBinding BorderThickness} SnapsToDevicePixelsTrueGridGrid.ColumnDefinitionsColumnDefinition/ColumnDefinition Width44//Grid.ColumnDefinitionsBorder x:NamebdLeft CornerRadius8 Margin4 4 8 4GridScrollViewer x:NamePART_ContentHost Focusablefalse HorizontalScrollBarVisibilityHidden VerticalScrollBarVisibilityHidden/TextBlock Text输入搜索内容 VerticalAlignmentCenter Margin10 0 Opacity0.8TextBlock.StyleStyle TargetTypeTextBlockSetter PropertyVisibility ValueCollapsed /Style.TriggersDataTrigger Binding{Binding RelativeSource{RelativeSource ModeFindAncestor,AncestorTypeTextBox},PathText} ValueSetter PropertyVisibility ValueVisible//DataTrigger/Style.Triggers/Style/TextBlock.Style/TextBlock/Grid/BorderButton Grid.Column1 Margin4Button.StyleStyle TargetTypeButtonSetter PropertyTemplateSetter.ValueControlTemplate TargetTypeButtonBorder x:Namebd CornerRadius8 BackgroundTransparentContentPresenter VerticalAlignmentCenter HorizontalAlignmentCenter/ContentPresenter/BorderControlTemplate.TriggersTrigger PropertyIsMouseOver ValueTrueSetter TargetNamebd PropertyBackground Value#60CACACA//Trigger/ControlTemplate.Triggers/ControlTemplate/Setter.Value/Setter/Style/Button.StylePath Fill#C9000000 Margin8 StretchUniform DataM15.7 13.3l-3.81-3.83A5.93 5.93 0 0013 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 000-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z/Path/Button/Grid/BorderControlTemplate.TriggersTrigger PropertyIsEnabled ValuefalseSetter PropertyOpacity TargetNameborder Value0.56//TriggerTrigger PropertyIsMouseOver ValuetrueSetter PropertyBackground TargetNameborder Valuewhite//TriggerTrigger PropertyIsKeyboardFocused ValuetrueSetter PropertyBackground TargetNamebdLeft Value#60CACACA/Setter PropertyBorderBrush TargetNameborder ValueTransparent/Setter PropertyBackground TargetNameborder Valuewhite//Trigger/ControlTemplate.Triggers/ControlTemplate/Setter.Value/SetterStyle.TriggersMultiTriggerMultiTrigger.ConditionsCondition PropertyIsInactiveSelectionHighlightEnabled Valuetrue/Condition PropertyIsSelectionActive Valuefalse//MultiTrigger.ConditionsSetter PropertySelectionBrush Value{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightBrushKey}}//MultiTrigger/Style.Triggers/Style/UserControl.ResourcesGridGrid.RowDefinitionsRowDefinition Height44/RowDefinition Heightauto//Grid.RowDefinitionsBorder Grid.RowSpan2 BorderThickness1 BackgroundWhite BorderBrush{StaticResource Control.BoderBrush} CornerRadius8Border.EffectDropShadowEffect ColorGray Opacity0.2 ShadowDepth0 BlurRadius12//Border.EffectBorder.StyleStyle TargetTypeBorderSetter PropertyVisibility ValueCollapsed/Style.TriggersDataTrigger Binding{Binding ElementNametxtBox,PathIsKeyboardFocused} ValueTrueSetter PropertyVisibility ValueVisible//DataTrigger/Style.Triggers/Style/Border.StyleGrid Margin0 44 0 12ListBox BorderBrushTransparent Padding4 0ItemsSource{Binding RelativeSource{RelativeSource ModeFindAncestor,AncestorTypelocal:SearchBox},PathSearchList}ListBox.ItemContainerStyleStyle TargetTypeListBoxItemSetter PropertyPadding Value8 /Setter PropertyTemplateSetter.ValueControlTemplate TargetType{x:Type ListBoxItem}Border x:NameBd SnapsToDevicePixelstrue Background{TemplateBinding Background} BorderBrush{TemplateBinding BorderBrush} BorderThickness{TemplateBinding BorderThickness} Padding{TemplateBinding Padding}ContentPresenter Opacity0.8 HorizontalAlignment{TemplateBinding HorizontalContentAlignment} VerticalAlignment{TemplateBinding VerticalContentAlignment} SnapsToDevicePixels{TemplateBinding SnapsToDevicePixels} x:NamecontentPresenter//BorderControlTemplate.TriggersTrigger PropertyIsMouseOver ValueTrueSetter PropertyBackground Value#20808080//TriggerTrigger PropertyIsSelected ValueTrueSetter PropertyBackground Value#20808080//TriggerMultiTriggerMultiTrigger.ConditionsCondition PropertyIsSelected Valuetrue/Condition PropertySelector.IsSelectionActive Valuefalse//MultiTrigger.ConditionsSetter PropertyBackground TargetNameBd Value#20808080//MultiTrigger/ControlTemplate.Triggers/ControlTemplate/Setter.Value/Setter/Style/ListBox.ItemContainerStyle/ListBox/Grid/BorderGridTextBox x:NametxtBox//GridGrid Grid.Row1 Height280/Grid/Grid
/UserControl
后台代码
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace SearchBar
{/// summary/// SearchBox.xaml 的交互逻辑/// /summarypublic partial class SearchBox : UserControl{public SearchBox(){InitializeComponent();}public ObservableCollectionstring SearchList{get { return (ObservableCollectionstring)GetValue(SearchListProperty); }set { SetValue(SearchListProperty, value); }}public static readonly DependencyProperty SearchListProperty DependencyProperty.Register(SearchList, typeof(ObservableCollectionstring), typeof(SearchBox), new PropertyMetadata(new ObservableCollectionstring()));}
}
控件使用显示示例
Window x:ClassSearchBar.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:SearchBarmc:IgnorabledTitleMainWindow Height500 Width420GridGrid.RowDefinitionsRowDefinition Height60/RowDefinition//Grid.RowDefinitionslocal:SearchBox x:Namesearchbox Grid.RowSpan2 Margin8 Panel.ZIndex50/local:SearchBoxListBox Grid.Row1 Margin16ListBoxItem Padding8AAA/ListBoxItemListBoxItem Padding8AAA/ListBoxItemListBoxItem Padding8AAA/ListBoxItemListBoxItem Padding8AAA/ListBoxItemListBoxItem Padding8AAA/ListBoxItemListBoxItem Padding8AAA/ListBoxItemListBoxItem Padding8AAA/ListBoxItemListBoxItem Padding8AAA/ListBoxItemListBoxItem Padding8AAA/ListBoxItemListBoxItem Padding8AAA/ListBoxItemListBoxItem Padding8AAA/ListBoxItemListBoxItem Padding8AAA/ListBoxItemListBoxItem Padding8AAA/ListBoxItem/ListBox/Grid
/Window