Pytanie z cyklu "a dlaczego?".
Utworzyłem kolekcję obiektów ListBox, którą chciałem obsługiwać przez RMB i LMB.
Pomijając problemy (rozwiązane) z oznaczeniem numeru właściwego indexu zauważyłem że:
PreviewMouseRightButtonDown działa (wykonuje akcję RMB )
PreviewMouseRightButtonUp działa (kończy akcję RMB)
MouseRightButtonUp (kończy akcję RMB zaraz za [Preview])
Z kolei klikając na element Item w ListBox zdarzenie MouseRightButtonDown już nie działa.
Czy możecie podpowiedziec dlaczego i jak zmusić MouseRightButtonDown do akcji?
MouseLeftButtonDown podobnie jak RMB - także nie działa.
Aktywności uzyskałem z prostego kodu, generując 4 zdarzenia RBM dla ListBox:
private void myList_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
right_click = false; //stała lokalna opisująca zachowanie RMB
int k = 1; //liczba do wyświetlenia
indx += 10; //funkcja
Update_Title(k);
}
private void myList_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
right_click = true; //ten event nie działa dla ListBox, zarówno RMB jak i LMB
int k = 2;
indx += 100;
Update_Title(k);
}
private void myList_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
right_click = true;
int k = 3;
indx += 1000;
Update_Title(k);
}
private void myList_PreviewMouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
right_click = false;
int k = 4;
indx += 10000;
Update_Title(k);
}
private void Update_Title(int k)
{
if (right_click == true)
{ btnTest.Content = k.ToString() + "R push "; }
else if (left_click == true)
{ btnTest.Content = k.ToString() + "L push "; }
else
{ btnTest.Content = k.ToString() + "not push "); }
}