设为首页 收藏本站
查看: 794|回复: 0

Windows Phone 7 自动完成输入框控件AutoCompleteBox

[复制链接]

尚未签到

发表于 2015-5-9 03:43:12 | 显示全部楼层 |阅读模式
  自动完成输入框控件AutoCompleteBox是一种很常用的控件,它实现了文本框的输入的自动搜索的功能,可以加快用户的输入效率。该控件在微软的Silverlight 开源控件项目“Silverlight Toolkit”中提供了,所以要在Windows Phone 7的应用程序里面要使用这样的一个控件就需要需要引入Toolkit组件,即要加载Microsoft.Phone.Controls.Toolkit.dll的引用。
  下面通过两种方式来在Windows Phone 7应用程序上实现AutoCompleteBox控件:
  第一种方式:直接的code-behind用List绑定控件
  第二种方式:使用MVVM模式用面向对象的方式绑定控件
  
DSC0000.jpg
  模糊查询功能使用了第一种方式
  前缀查询功能使用的是第二种方式





   
        
   
   
   
        
            
            
        
        
            
               
                    
               
            
            
               
                    
                        
                           
                                
                           
                        
                    
               
            
        
   

  注意:
  第二种方式的实现添加了下面的引用和绑定
  xmlns:My="clr-namespace:TestingAutoComplete"
  
        
   
  
                    
                        
                           
                                
                           
                        
                    
               
  下面的MainPage.xaml.cs代码是给第一种方式使用的




using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using System.ComponentModel;
namespace TestingAutoComplete
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
            List names = new List();
            string namesString = "Fernando Sucre,Scofield,Alexander Mahone,Theodore Bagwell,Sara Tancredi ,Lincoln Burrows,John Abruzzi,Fluorine";
            foreach (var name in namesString.Split(','))
                names.Add(name);
            this.people1.ItemsSource = names;
            this.people1.ItemFilter += SearchCountry;
        }
        //全局模糊搜索
        bool SearchCountry(string search, object value)
        {
            if (value != null)
            {
                //如果包含了搜索的字符串则返回true
                if (value.ToString().ToLower().IndexOf(search) >= 0)
                    return true;
            }
            // 如果不匹配 返回false
            return false;
        }
    }
}
  第二种方式使用的类
  Name.cs




using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace TestingAutoComplete
{
    public class Name
    {
        public string MyName { get; set; }
        public override string ToString()
        {
            return MyName;
        }
    }
}
  Names.cs




using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.ComponentModel;
using System.Collections.ObjectModel;
namespace TestingAutoComplete
{
    public class Names : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        private ObservableCollection _listOfnames;
        public ObservableCollection ListOfNames
        {
            get { return _listOfnames; }
            set
            {
                _listOfnames = value;
                if (PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs("ListOfNames"));
            }
        }
        public Names()
        {
            ListOfNames = new ObservableCollection();
            string namesString = "Fernando Sucre,Scofield,Alexander Mahone,Theodore Bagwell,Sara Tancredi ,Lincoln Burrows,John Abruzzi,Fluorine";
            foreach (var name in namesString.Split(','))
                ListOfNames.Add(new Name() { MyName = name });
        }
    }
}
  AutoCompleteBox控件常用方法:
  PopulateComplete:通知AutoCompleteBox,ItemsSource属性已经确定,数据可以被过滤用以在下拉框中提供可能合适的匹配选项
  。
  组件常用属性:
  FilterMode:获取或设置文本框中的文本怎样被用来过滤具体由为下拉内容准备的ItemsSource属性的项。
  IsDropDownOpen:获取或设置一个值用以确定该组件的下拉部分是否已打开。
  IsTextCompletionEnabled:该属性的作用是获取或设置一个值用以确定在过滤过程中第一个可能的匹配结果是否自动地被填充至
  AutoCompleteBox组件中。有时我们需要第一个匹配的预选对象自动填充至AutoCompleteBox的文本框中,这时就需要通过设置该属
  性以达到所需效果。
  ItemFilter:获取或设置自定义方法用来使用用户输入的文本来过滤在下拉框中显示的具体由ItemsSource属性所决定的items。
  MaxDropDownHeight:获取或设置该组件的下拉部分高度的最大值。
  MinimumPopulateDelay:获取或设置第一个匹配结果出现的最小延迟时间。
  MinimumPrefixLength:获取或设置需要被键入该组件文本框中的最小字符数量,在该组件显示可能的匹配之前。
  SearchText:获取在itemsSource项目集合中被用作过滤项目的文本。
  SelectionAdapter:获取或设置用以生成下拉选项部分的选择适配器,通过一个可选择的项目列表。
  Text:获取或设置该组件文本框中的值。
  TextBoxStyle:获取或设置该组件的文本框的样式。
  TextFilter:获取或设置自定义方法用来使用用户输入的文本以基于文本的方式过滤在下拉框中显示的具体由ItemsSource属性所决
  定的items。
  ValueMemberBinding:获取或设置用于获取对在AutoCompleteBox控制文本框部分显示的值的绑定,为显示在下拉过滤项目。
  ValueMemberPath:获取或设置用来获取为在AutoCompleteBox控制文本框部分显示的值的属性的路径,为显示在下拉筛选项目。
  
组件常用事件:
  DropDownClosed:发生于IsDropDownOpen属性由true转为false。
  DropDownClosing:发生于IsDropDownOpen属性正在由true转为false。
  DropDownOpened:发生于IsDropDownOpen属性由false转为true。
  DropDownOpening:发生于IsDropDownOpen属性正在由false转为true。
  Populated:发生于当该组件已经生成匹配Text属性的下拉部分时。
  Populating:发生于当该组件正在生成匹配Text属性的下拉部分时。
  SelectionChanged:发生于当该组件的下拉部分的选项改变时。
  TextChanged:发生于当该组件文本框中的值改变时。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-65063-1-1.html 上篇帖子: 利用 XNA 实现 Windows Phone 7 上的电流效果 下篇帖子: Windows Phone 7 最新的开发工具库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表