AutoCompleteBox如何实现鼠标点击后实现查询功能
2012-08-08 00:09
447 查看
在AutoCompleteBox控件中鼠标左键事件被屏蔽了,即使你绑定了鼠标左键事件,也不会响应。
下面我就介绍如何点击鼠标左键事件进行查询:
<sdk:AutoCompleteBox Name="WordTextBox" Height="48" Width="450" FilterMode="StartsWith" ValueMemberBinding="{Binding Name}" FontSize="28" ItemTemplate="{StaticResource AutoBoxDataTemplate}" KeyUp="WordTextBox_KeyUp" />
1.首先绑定数据源到ItemSource上。
public class DicTag
{
public string Code { set; get; }
public string Name { set; get; }
public int Size { set; get; }
}
绑定数据:List<DicTag> list=new List<DicTag>// list是一个包含DicTag的集合类
WordTextBox.ItemSorce=list;
注意:在AutoCompleteBox控件中需要添加 ValueMemberBinding="{Binding Name}"属性(上面红色部分),其中Name是DicTag类的属性。这样才能把数据绑定到ItemSource,虽然 ValueMemberBinding="{Binding Name}"只进行了Name绑定,但只要在ItemTemplate中只进行了Code,Size的绑定,它们都会被显示出来。这里我们只在ItemTemplate中绑定了Name(见第二步),所以只会显示Name属性的值。
2.然后对AutoCompleteBox的ItemTemplate模板进行绑定(红色部分)。
<DataTemplate x:Key="AutoBoxDataTemplate">
<Grid x:Name="AutoBoxDataPanel" Cursor="Hand" Width="450" MouseLeftButtonUp="AutoBoxDataPanel_MouseLeftButtonUp" >
<TextBlock x:Name="textBlock" Text="{Binding Path=Name}" FontSize="16" >
<Grid>
</DataTemplate>
3.在ItemTemplate模板中的Grid上写MouseLeftButtonUp事件(第二步中红色部分)。
后台处理事件:
private void AutoBoxDataPanel_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
TextBlock block = (sender as Grid).FindName("textBlock") as TextBlock;
if (block != null)
{
string key = block.Text;
WordTextBox.Text=key;
Serach_Click(sender,e); // 触发搜索按钮
}
}
当我们在下拉列表中点击一项时,就会触发这个事件,并把该项的数据得到,提供操作。
4.对于点击回车也触发查询事件的话,需要在AutoCompleteBox控件中写入KeyUp事件。
如果我们不选择用鼠标点击,而是敲击回车键的话,也要达到查询事件的触发,可以在AutoCompleteBox添加KeyUp="WordTextBox_KeyUp"事件
后台事件处理:
private void WordTextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
string key = WordTextBox.Text.ToString().Trim();
if (!string.IsNullOrEmpty(key))
{
this.Serach_Click(sender, e); // 触发搜索按钮
}
}
}
通过以上四步,就可以实现搜索时,点击鼠标和敲击回车时,实现搜索功能。
下面我就介绍如何点击鼠标左键事件进行查询:
<sdk:AutoCompleteBox Name="WordTextBox" Height="48" Width="450" FilterMode="StartsWith" ValueMemberBinding="{Binding Name}" FontSize="28" ItemTemplate="{StaticResource AutoBoxDataTemplate}" KeyUp="WordTextBox_KeyUp" />
1.首先绑定数据源到ItemSource上。
public class DicTag
{
public string Code { set; get; }
public string Name { set; get; }
public int Size { set; get; }
}
绑定数据:List<DicTag> list=new List<DicTag>// list是一个包含DicTag的集合类
WordTextBox.ItemSorce=list;
注意:在AutoCompleteBox控件中需要添加 ValueMemberBinding="{Binding Name}"属性(上面红色部分),其中Name是DicTag类的属性。这样才能把数据绑定到ItemSource,虽然 ValueMemberBinding="{Binding Name}"只进行了Name绑定,但只要在ItemTemplate中只进行了Code,Size的绑定,它们都会被显示出来。这里我们只在ItemTemplate中绑定了Name(见第二步),所以只会显示Name属性的值。
2.然后对AutoCompleteBox的ItemTemplate模板进行绑定(红色部分)。
<DataTemplate x:Key="AutoBoxDataTemplate">
<Grid x:Name="AutoBoxDataPanel" Cursor="Hand" Width="450" MouseLeftButtonUp="AutoBoxDataPanel_MouseLeftButtonUp" >
<TextBlock x:Name="textBlock" Text="{Binding Path=Name}" FontSize="16" >
<Grid>
</DataTemplate>
3.在ItemTemplate模板中的Grid上写MouseLeftButtonUp事件(第二步中红色部分)。
后台处理事件:
private void AutoBoxDataPanel_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
TextBlock block = (sender as Grid).FindName("textBlock") as TextBlock;
if (block != null)
{
string key = block.Text;
WordTextBox.Text=key;
Serach_Click(sender,e); // 触发搜索按钮
}
}
当我们在下拉列表中点击一项时,就会触发这个事件,并把该项的数据得到,提供操作。
4.对于点击回车也触发查询事件的话,需要在AutoCompleteBox控件中写入KeyUp事件。
如果我们不选择用鼠标点击,而是敲击回车键的话,也要达到查询事件的触发,可以在AutoCompleteBox添加KeyUp="WordTextBox_KeyUp"事件
后台事件处理:
private void WordTextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
string key = WordTextBox.Text.ToString().Trim();
if (!string.IsNullOrEmpty(key))
{
this.Serach_Click(sender, e); // 触发搜索按钮
}
}
}
通过以上四步,就可以实现搜索时,点击鼠标和敲击回车时,实现搜索功能。
相关文章推荐
- Flex如何实现鼠标点击事件穿透功能
- 如何用js实现,在一个页面有个输入文档框,然后点击查询按扭后,调用IE的查询功能在当前页面进行查询
- iOS WebView 如何通过js获取网页中所有图片并加入点击事件,实现浏览图片的功能
- jquery 实现鼠标点击div盒子移动功能
- 各位大虾请帮忙 如何实现用鼠标点击datagrid的某一行然后用js获得选中行的所有值
- 如何绑定android点击事件--跳转到另一个页面并实现关闭功能?
- MySql计数器,如网站点击数,如何实现高性能高并发的计数器功能
- 实现功能——鼠标点击调整材质属性
- 如何用java实现“点击一个按钮,出现另一个按钮”的功能?
- 用户控件包含一个搜索功能,但是在调用页面中按回车时无法直接提交这个表单,只有鼠标点击才提交,如何解决?
- android基础之如何实现触屏监听和鼠标点击事件
- 如何实现简单的自动提示(autocomplete)填充搜索功能java代码。
- 如何基于asp.net实现ListBox控件的鼠标拖拽功能
- 关于如何实现表间查询并提取班号的再研究(字典功能)
- 小程序中如何实现操作菜单的显示(点击选取图片,弹出菜单拍摄、相册)功能
- contextmenu用法-实现鼠标右键点击菜单功能
- UI_如何实现点击图片之后放大,或缩放功能
- C#+AE 实现点击查询属性功能
- js鼠标事件解析——如何用js实现一个拖动但是不触发其点击事件
- MySql计数器,如网站点击数,如何实现高性能高并发的计数器功能