天天看點

autocomplete觸發事件_AutoCompleteBox實作滑鼠點選後實作查詢功能

在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); // 觸發搜尋按鈕

}

}

}

通過以上四步,就可以實作搜尋時,點選滑鼠和敲擊回車時,實作搜尋功能。