在AutoCompleteBox控件中滑鼠左鍵事件被屏蔽了,即使你綁定了滑鼠左鍵事件,也不會響應。
下面我就介紹如何點選滑鼠左鍵事件進行查詢:
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; }
}
綁定資料:Listlist=new List// 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模闆進行綁定(紅色部分)。
MouseLeftButtonUp="AutoBoxDataPanel_MouseLeftButtonUp" >
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事件。
如果我們不選擇用滑鼠點選,而是敲擊Enter鍵的話,也要達到查詢事件的觸發,可以在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); // 觸發搜尋按鈕
}
}
}
通過以上四步,就可以實作搜尋時,點選滑鼠和敲擊回車時,實作搜尋功能。