比較的少数のアイテムが取り込まれたリストボックスがあります。アイテムが画面に収まらないため、リストボックスの右側に垂直スクロールバーが自動的に表示されます。スクロールバーはマウス ホイールに反応しますが、リストボックスの項目は反応しません。アイテムをマウス ホイールに反応させるにはどうすればよいですか?
前もって感謝します!
――ナチョ
比較的少数のアイテムが取り込まれたリストボックスがあります。アイテムが画面に収まらないため、リストボックスの右側に垂直スクロールバーが自動的に表示されます。スクロールバーはマウス ホイールに反応しますが、リストボックスの項目は反応しません。アイテムをマウス ホイールに反応させるにはどうすればよいですか?
前もって感謝します!
――ナチョ
これにより、WPF ウィンドウにあるリスト ボックスの項目が選択されます。マウス ホイールを回すと、ListBox 項目が選択されます。ListBox はこの前にフォーカスを取得し、最初の項目は既に選択されています。
クラスファイルに次のように記述します。
private void ListBox1_MouseWheel(object sender, MouseWheelEventArgs e)
{
int cap = (ListBox1.Items.Count) - 1;
int place = ListBox1.SelectedIndex;
int incre = e.Delta/120;
place += incre;
if (place > cap)
{
place = 0;
}
if (place < 0)
{
place = cap;
}
ListBox1.SelectedIndex = place;
ListBox1.ScrollIntoView(itemNoresult1.SelectedItem);
}
リスト ボックスの XAML プロパティに次のように入力します。PreviewMouseWheel="ListBox1_MouseWheel"
ListBox がマウスホイール イベントに応答しないようにする場合は、ListBox 要素のコンテキスト内でマウスホイール イベントを処理します。
そのハンドラーで、含まれているリストボックスへのイベントのバブリングを停止する e.Handled=true を設定できます。
そのステートメントを ListBoxItem 内の包含要素に入れることもできます。