2012-09-16 1 views
0

내 응용 프로그램에서 사용자는 ListBox에 항목을 추가 할 수 있습니다. 사용자가 AutoCompleteBox에서 Return Key을 한 번 더 선택하여 새 항목을 추가 할 수 있기를 바랍니다. Add 버튼의 True 버튼에 IsDefault 속성을 설정하면 충분하다고 생각했습니다. MainWindow를 코드처럼 보이는 방법항목을 선택한 후 AutoCompletBox에서 포커스를 이동하는 방법은 무엇입니까?

입니다 :

<ListBox Name="listBox1" /> 

<Button Name="button1" Content="Add" IsDefault="True" Click="button1_Click" /> 

<my:AutoCompleteBox Name="autoCompleteBox1" 
       IsTextCompletionEnabled="True" 
       PreviewKeyDown="autoCompleteBox1_PreviewKeyDown"/> 

자체에 대한 AutoCompleteBox 유지 초점은, 그때는을 인 경우 확인하여 KeyDown 이벤트에 응답하려고하기 때문에 IsDefault 작동하지 않았다 설정 Return 키이 눌러졌고 버튼에 포커스를 설정하려고했습니다.

하지만 돌아 가기 키을 누르면 항목을 선택한 후 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에서 포커스를 어떻게 옮길 수 있습니까?

+0

KeyUp 이벤트를 사용해보십시오. – Paparazzi

+0

트릭을 한 @Blam에게 감사드립니다. 답변으로 어떻게 표시합니까? – agugglez

+0

답변으로 내 의견을 게시했습니다. 감사 – Paparazzi

답변

0

KeyUp 이벤트를 사용하십시오. KeyDown이 포커스를 변경하기에는 너무 일찍 나타납니다.