WPF自定义搜索框代码分享

首先下载搜索图标:

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

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

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

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

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

UserControl界面: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<UserControl x:Class= "WpfApplication18.SearchControl"
        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>

UserControl后台:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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 ; }
}

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

 

转载于:https://www.cnblogs.com/sjqq/p/7891189.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了生活中,工作中记住要记录的东西,以便查询(包括:工作相关信息,生活常识,笑话等),而做的一个小软件以下称notes。 因为我是做Winform程序的,所以notes的初期是用winForm做的;后来学习了wpf,又把软件界面移植到wpf上。 采了XML数据存取,使用了Linq进行查询; 功能主要分为五大块:第一 记录;第二 查询(根据标题查询,根据类型查询,综合查询 );第三 对记录内容的相关操作(如:存储文件的合并、发送邮件、根据类型分割删除保存、删除、修改、提取存储文件中所有类型、背景色的设置、字体的设置等);第四 附加功能(1、映射功能列表;2、文件的查询;3、在指定目录中进行删除操作) 第五 反馈意见 对第四中附加功能介绍: 1、映射功能列表:把平时用到的所有文件映射到一个界面中;可以做备注说明;(背景:平时会用到很多软件,其中包括网上载的。但是时间过的久了,则忘记是否下载过,或下载后保存的位置,又或者忘记下载后软的功能等等) 2、文件夹中快速查找文件或文件夹,支持模糊查询;查到的文件或文件夹可以即时打开; 3、删除文件或文件夹,此功能快速的删除指定的文件或文件夹,只支持完全匹配。 对第五的说明:之所以把意见反馈单独拿出是因为:如果那位兄弟姐妹能在使用过程中提出5条有用的建议(包括软件Bug,使用的习惯等,我将会根据您的要求送任意一个模块的源码,如果能提出建设性意见的可以随意指软件中的一块功能,我送上源码,并且可以做讲解说明) 1、【Linq to XML模块】 2、【加密解密模块】 3、【工具模块(发送邮件,MD5解密,自动生成验证码等)】 4、【WPF数据验证模块】 5、【WPF进度条模块】 下载即可使用。 本人希望大家都可以把生活中,工作中值的记录的东西全部记录下来。 界面移值到wpf时,所用到功能有: 1、数据验证 2、数据绑定 3、背景设置 4、资源的调用 5、触发器的使用 6、命令的使用 8、打开文件或文件夹,保存文件 9、界面托盘 10、Grid,TextBox,ListBox,ListView,Lable等基本控件的使用 11、窗口(隐藏,最小化,最大化,重写关闭,置顶) 12、进度条的使用 13、异步的使用 14、多线程的使用 15、右键菜单的使用 16、字体的设置 17、界面的刷新 18、跨线程调用方法 19、简单的动画 20、界面的布局
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值