Mouseover и Isselected события для ListBoxitem в WPF
-
27-10-2019 - |
Вопрос
Я хочу, чтобы ListBoxitem запустил два события, которые я могу поймать из внешнего USERCONTROL, который содержит ListBox. Вот что я получил до сих пор:
<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>
Теперь это вызывает мое событие ListBox_Select. Что я хочу, так это вызов другому событию или свойству, когда IseMouseOver. Просто чтобы прояснить, я знаю, как изменить фон/передний план или другие свойства самого списка. Но я хочу что -то изменить от бабушки и дедушки.
Решение
У вас уже есть это событие ... обрабатывать статическое маршрутизированное событие от ListBoxItem
Класс под названием «Избран» (и есть также «не выбран») у любого предка, при условии, что мы не обращаемся с «выбором» в любом месте дерева потомков ...
<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>
И в коде ...
private void OnListBoxSelected(object sender, RoutedEventArgs e)
{
var window = sender as Window;
var listBoxItem = e.OriginalSource as ListBoxItem;
var selectedItem = listBoxItem.DataContext;
}
Надеюсь это поможет...
Не связан с StackOverflow