私のアプリケーションでは、ユーザーはアイテムを に追加できますListBox
。から選択した後、もう一度Return キーAutoCompleteBox
を押すことで、ユーザーが新しい項目を追加できるようにしたかったのです。プロパティをボタンに設定するだけで十分だと思いました。IsDefault
True
Add
MainWindow コードは次のようになります。
<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
しかし、項目を選択した後に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
ですか?