SL - 总结 - AutoCompleteSelector
来源:互联网 发布:java定义包的关键字 编辑:程序博客网 时间:2024/04/28 08:55
/// <summary>
/// 1.0.6
/// </summary>
public abstract class AutoCompleteSelector : AutoCompleteBox
{
private IAutoCompleteSelectorDataProvider dataProvider;
private bool allowSearch = false;
public AutoCompleteSelector(IAutoCompleteSelectorDataProvider dataProvider)
{
this.dataProvider = dataProvider;
this.Loaded += new RoutedEventHandler(AutoCompleteSelectorLoaded);
}
protected abstract IDictionary<string, object> GetParameters();
void AutoCompleteSelectorLoaded(object sender, RoutedEventArgs e)
{
this.KeyDown += new KeyEventHandler(AutoCompleteSelector_KeyDown);
this.KeyUp += new KeyEventHandler(AutoCompleteSelector_KeyUp);
this.TextChanged += new RoutedEventHandler(AutoCompleteSelectorTextChanged);
this.SelectionChanged += new SelectionChangedEventHandler(AutoCompleteSelectorSelectionChanged);
this.ItemsSource = new ObservableCollection<string>();
}
void AutoCompleteSelector_KeyUp(object sender, KeyEventArgs e)
{
timeCount = 3;
if (allowSearch)
{
if (!isRunning)
{
thread = new Thread(new ThreadStart(ThreadProcess));
thread.Start();
}
}
}
void AutoCompleteSelector_KeyDown(object sender, KeyEventArgs e)
{
allowSearch = true;
this.SelectedItem = null;
}
void AutoCompleteSelectorTextChanged(object sender, RoutedEventArgs e)
{
}
void AutoCompleteSelectorSelectionChanged(object sender, SelectionChangedEventArgs e)
{
allowSearch = false;
}
private bool isRunning;
private int timeCount = 0;
private Thread thread;
private void ThreadProcess()
{
isRunning = true;
while (timeCount != 0)
{
timeCount--;
Thread.Sleep(100);
}
this.Dispatcher.BeginInvoke(new Action(() =>
{
dataProvider.SearchData(this.Text, GetParameters(), (result) =>
{
var tempItems = this.ItemsSource as ObservableCollection<string>;
tempItems.Clear();
if (result != null)
{
foreach (var item in result)
{
tempItems.Add(item);
}
}
this.PopulateComplete();
});
}));
isRunning = false;
}
}
public interface IAutoCompleteSelectorDataProvider
{
void SearchData(string text, IDictionary<string, object> paramaters, Action<ObservableCollection<string>> callback);
}
0 0
- SL - 总结 - AutoCompleteSelector
- sl/sql习题总结
- SL - 总结 - DataSelectorByLookupWindow
- SL - 总结 - ServerPagerViewModel - 1.0.2
- SL
- SL
- [学习记号 - SL其他] Silverlight资源引用路径总结
- sl 基础
- 学习SL
- SL Controller
- JNI 使用总结 (JAVA 调用C语言编写的DLL/SO/SL文件)
- 大学SL课堂档案
- 中国的SL网址
- SL无法登陆
- SL动态加入图片
- SL-425 课程简介
- SL-285 课程简介
- SL-275 课程简介
- 常用的语言代码与国家地区对照表
- SL - 整理 - 将验证做到资源文件中
- SL - 整理 - 定义Dependency属性(使自定义组件属性能被绑定)
- bitmap 将图片压缩到指定的大小 JAVA
- SL - 整理 - 多线程调用UI组件时需注意的
- SL - 总结 - AutoCompleteSelector
- HD2 - 刷到wp7 NODO版
- Java Web中资源的访问路径
- IIS7 - HTTP Error 500 错误 0x80070021
- SL - 总结 - DataSelectorByLookupWindow
- SL - 总结 - ServerPagerViewModel - 1.0.2
- C#中readonly与const的区别
- MVC - 在IIS7部署 .net3.5版的 MVC程序遇到的问题
- MVC - Membership