0
在我的應用程序中,用戶可以將項目添加到ListBox
。我希望用戶能夠在從AutoCompleteBox
中選擇後再添加一個新項目,方法是再次按返回鍵。我認爲在Add
按鈕上設置IsDefault
屬性爲True
就足夠了。如何在選擇項目後將焦點從AutoCompletBox移開?
這是主窗口的代碼看起來像:
<ListBox Name="listBox1" />
<Button Name="button1" Content="Add" IsDefault="True" Click="button1_Click" />
<my:AutoCompleteBox Name="autoCompleteBox1"
IsTextCompletionEnabled="True"
PreviewKeyDown="autoCompleteBox1_PreviewKeyDown"/>
由於設置IsDefault
沒有工作,因爲AutoCompleteBox
保持焦點本身,我又試圖通過檢查,如果它是在KeyDown
事件作出迴應返回鍵被按下並嘗試將焦點設置到按鈕上。
但是按下返回鍵選擇一個項目後沒有觸發KeyDown
事件。於是,我終於訂閱了PreviewKeyDown
事件,並做到這一點:
public partial class MainWindow : Window
{
ObservableCollection<string> myCollection = new ObservableCollection<string>();
public MainWindow()
{
InitializeComponent();
listBox1.ItemsSource = myCollection;
autoCompleteBox1.ItemsSource = new string[] { "item1", "item2", "item3", "item4", "item5" };
}
private void autoCompleteBox1_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
button1.Focus();
}
}
private void button1_Click(object sender, RoutedEventArgs e)
{
if (autoCompleteBox1.SelectedItem != null)
myCollection.Add((string)autoCompleteBox1.SelectedItem);
}
}
但按鈕沒有獲得焦點。我如何將注意力從AutoCompleteBox
移開?
嘗試KeyUp事件。 – Paparazzi
感謝@Blam做到了這一點。我如何標記爲答案? – agugglez
發表我的評論作爲答案。謝謝 – Paparazzi