源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

WPF自定义搜索框代码分享

  • 时间:2022-02-12 15:31 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:WPF自定义搜索框代码分享
首先下载搜索图标: [img]http://files.jb51.net/file_images/article/201609/201699114043385.jpg?201689114054[/img] 控件中的搜索图标下载地址:[url=http://www.easyicon.net/1183666-Search_icon.html]http://www.easyicon.net/1183666-Search_icon.html[/url]  搜索框设计过程比较简单:  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> 
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; }
  } 
直接引用就行了:<wpfApplication18:SearchControl></wpfApplication18:SearchControl> 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部