Ein Stapel ToggleButtons kann IsChecked = true gesetzt werden wenn man mit der gedrückten Maustaste darüber fährt (Verwandtes Thema:
ToggleButton aktivieren ohne ClickEreignis).
Nun funktioniert folgendes gut:
XML-Code: |
<StackPanel>
<ToggleButton Content="hier" MouseEnter="OnMouseEnterHandler1"/>
<ToggleButton Content="hier" MouseEnter="OnMouseEnterHandler1"/>
<ToggleButton Content="hier" MouseEnter="OnMouseEnterHandler1"/>
<ToggleButton Content="hier" MouseEnter="OnMouseEnterHandler1"/>
<ToggleButton Content="hier" MouseEnter="OnMouseEnterHandler1"/>
</StackPanel>
|
EventHandler:
C#-Code: |
void OnMouseEnterHandler1(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
ToggleButton absender = e.Source as ToggleButton;
absender.IsChecked = true;
}
}
|
... aber nur wenn die gedrückte Maustaste aus einem Bereich kommt der nicht auf einem der ToggleButtons liegt. Beginnt man nun mit dem Drücken und ziehen des Mauszeigers über einem der ToggleButtons funktioniert die Lösung nicht, die weiteren TBs werden nicht aktiviert.
Der Grund dafür ist vermutlich der noch aktive Fokus des ToggleButtons auf dem gestartet wurde, damit werden alle anderen nicht aktiviert beim überfahren mit der Maus.
Ist dieser Grund richtig? Kann man das lösen, ist es möglich den Fokus beim verlassen eines Elements zu löschen?