码迷,mamicode.com
首页 > Windows程序 > 详细

WPF 自定义搜索框

时间:2016-09-08 23:02:08      阅读:636      评论:0      收藏:0      [点我收藏+]

标签:

技术分享 技术分享

控件中的搜索图标下载地址: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 自定义搜索框

标签:

原文地址:http://www.cnblogs.com/kybs0/p/5854620.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!