ListBox
にRIAサービスを設定すると、アイテムが自動的に選択されます。これにより、SelectionChanged
イベントがトリガーされます。矢印キーを使用して選択範囲を上下に移動すると、イベントもトリガーされます。SilverlightのClickキーまたはEnterキーのときにのみListBoxアイテムを選択
私はこれが嫌いです。ユーザーがEnterを押すか、項目をクリックして選択する必要があります。これをどのように達成するのですか?
ListBox
にRIAサービスを設定すると、アイテムが自動的に選択されます。これにより、SelectionChanged
イベントがトリガーされます。矢印キーを使用して選択範囲を上下に移動すると、イベントもトリガーされます。SilverlightのClickキーまたはEnterキーのときにのみListBoxアイテムを選択
私はこれが嫌いです。ユーザーがEnterを押すか、項目をクリックして選択する必要があります。これをどのように達成するのですか?
ListBox
のイベントは、MouseLeftButtonDown
とKeyDown
のイベントを処理できます。 KeyDown
イベントの場合は、EventArgs
をチェックしてEnterキーが押されたかどうかを確認する必要があります(他のキーではなく)。
これらのイベントは、項目が選択されていない場合でも発生する可能性があります(たとえば、ユーザがListBox
の内部をクリックした場合、実際の項目を超過しない場合)ので、イベントハンドラ内で確認してください。
public void MyListBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
ItemSelected();
}
public void MyListBox_KeyDown(object sender, KeyEventArgs e)
{
if ((e.Key & Key.Enter) == Key.Enter)
{
ItemSelected();
}
}
public void ItemSelected()
{
if (MyListBox.SelectedItem != null)
{
// Handle item selection here
}
}
これらは、私の頭の上からなので、あなたがそれらを正確に正しい動作させるために、わずかにこれらを微調整する必要がある場合があります
あなたのイベントハンドラは、次のようになります。うまくいけば、一般的なアイデアを参照してください。それを行うには
もう一つの方法は、この操作が完了したら、それを再接続し、(「-=
」構文を使用)の項目でListBox
を取り込む際に、単純にSelectionChanged
イベントハンドラを削除することです。
このようにすることをお勧めします(リストにデータが入力されたときにイベントが発生する心配があるため)。それは、上下の矢印キーを使用してユーザーがアイテムを選択するのを妨げることはありませんが、そうするための本当に良い理由がない限り、物事を不必要にしてしまいます(ユーザーは、働くべきである)。