首页 > 代码库 > WPF 自定义搜索框

WPF 自定义搜索框

技术分享 技术分享

控件中的搜索图标下载地址:http://www.easyicon.net/1183666-Search_icon.html

搜索框设计过程比较简单:

1、先定义一个Rectangle作为背景

2、然后中间放TextBox输入,可以重写其中的模板。提示语Label放在模板中,可以在模板的触发器中控制隐藏显示~

3、搜索按钮-大家随便在网上下个就行了。

UserControl界面:

技术分享
<UserControl x:Class="WpfApplication18.SearchControl"             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"              mc:Ignorable="d" MinHeight="30" MinWidth="150" Background="Transparent"             d:DesignHeight="30" d:DesignWidth="150">    <Grid>        <Grid.ColumnDefinitions>            <ColumnDefinition Width="15"></ColumnDefinition>            <ColumnDefinition Width="*"></ColumnDefinition>            <ColumnDefinition Width="36"></ColumnDefinition>        </Grid.ColumnDefinitions>        <Rectangle Grid.Column="0" Grid.ColumnSpan="3" Fill="LightGray" RadiusX="15" RadiusY="15" Opacity="0.8"></Rectangle>                <TextBox x:Name="TbxInput" Grid.Column="1" KeyDown="TbxInput_OnKeyDown">            <TextBox.Template>                <ControlTemplate TargetType="TextBox">                    <Grid>                        <TextBlock x:Name="Uc_TblShow" Text="请输入..." Foreground="Gray" Opacity="0.5" VerticalAlignment="Center" Visibility="Collapsed"></TextBlock>                        <TextBox x:Name="Uc_TbxContent" Foreground="Gray" Background="Transparent" VerticalAlignment="Center" VerticalContentAlignment="Center" BorderThickness="0"                                 Text="{Binding ElementName=TbxInput,Path=Text,Mode=TwoWay}" FontSize="18"></TextBox>                    </Grid>                    <ControlTemplate.Triggers>                        <Trigger SourceName="Uc_TbxContent" Property="Text" Value="">                            <Setter TargetName="Uc_TblShow" Property="Visibility" Value="Visible"></Setter>                        </Trigger>                        <Trigger SourceName="Uc_TbxContent" Property="IsFocused" Value="True">                            <Setter TargetName="Uc_TblShow" Property="Visibility" Value="Collapsed"></Setter>                        </Trigger>                    </ControlTemplate.Triggers>                </ControlTemplate>            </TextBox.Template>        </TextBox>                <Button x:Name="BtnSearch" Grid.Column="2" Click="BtnSearch_OnClick" Cursor="Hand">            <Button.Template>                <ControlTemplate TargetType="Button">                    <Grid>                        <Image x:Name="Uc_Image" Source="1181298.png" Height="20" Width="20"></Image>                        <ContentPresenter></ContentPresenter>                    </Grid>                    <ControlTemplate.Triggers>                        <Trigger Property="IsMouseOver" Value="true">                            <Setter TargetName="Uc_Image" Property="Height" Value="25"></Setter>                            <Setter TargetName="Uc_Image" Property="Width" Value="25"></Setter>                        </Trigger>                    </ControlTemplate.Triggers>                </ControlTemplate>            </Button.Template>        </Button>    </Grid></UserControl>
View Code

UserControl后台:

技术分享
    public partial class SearchControl : UserControl    {        public SearchControl()        {            InitializeComponent();        }        public event EventHandler<SearchEventArgs> OnSearch;         private void BtnSearch_OnClick(object sender, RoutedEventArgs e)        {            ExeccuteSearch();        }        private void TbxInput_OnKeyDown(object sender, KeyEventArgs e)        {            ExeccuteSearch();        }        private void ExeccuteSearch()        {            if (OnSearch!=null)            {                var args=new SearchEventArgs();                args.SearchText = TbxInput.Text;                OnSearch(this, args);            }        }    }    public class SearchEventArgs : EventArgs    {        public string SearchText { get; set; }    }
View Code

直接引用就行了:<wpfApplication18:SearchControl></wpfApplication18:SearchControl>

WPF 自定义搜索框