Mausover- und ausgewählte Ereignisse für ListBoxItem in WPF
-
27-10-2019 - |
Frage
Ich möchte ListBoxItem -Auslöser von zwei Ereignissen aus dem äußeren Usercontrol auslösen, das die Listbox enthält. Hier ist, was ich so weit habe:
<ListBox
Background="Black"
Selected="listbox_selected"
x:Name="listBox">
<ListBox.Resources>
<Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsMouseOver,RelativeSource={RelativeSource Self}}"
Value="True">
<Setter Property="IsSelected" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.Resources>
</ListBox>
Dies ruft nun mein Ereignis von ListBox_Selected auf. Was ich möchte, ist eine andere Veranstaltung oder Eigenschaft, wenn ich mausover ist. Um es klar zu machen, weiß ich, wie man den Hintergrund/den Vordergrund oder die anderen Eigenschaften des ListBoxItem selbst ändert. Aber ich möchte etwas vom Großelternteil ändern.
Lösung
Sie haben bereits dieses Ereignis ... behandeln ein statisches Routed -Ereignis von ListBoxItem
Klasse namens "ausgewählt" (und es gibt auch "nicht ausgewählt") bei jedem Vorfahren, vorausgesetzt, wir verarbeiten das Ereignis von "Selektion" überall im Descendent -Baum ...
<Window x:Class="...."
...
ListBoxItem.Selected="OnListBoxSelected">
<Grid>
<ListBox ItemsSource="{Binding Employees}"
DispalyMemberPath="Name"
selectedValuePath="ID" >
<ListBox.Resources>
<Style TargetType="ListBoxItem"
BasedOn="{StaticResource
{x:Type ListBoxItem}}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsMouseOver,
RelativeSource={RelativeSource
Self}}"
Value="True">
<Setter Property="IsSelected"
Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.Resources>
</ListBox>
</Grid>
</Window>
Und im Code hinter ...
private void OnListBoxSelected(object sender, RoutedEventArgs e)
{
var window = sender as Window;
var listBoxItem = e.OriginalSource as ListBoxItem;
var selectedItem = listBoxItem.DataContext;
}
Hoffe das hilft...