您的位置:首页 > 游戏 > 游戏 > listbox有scrollviewer,点击后不会触发selectionchanged事件

listbox有scrollviewer,点击后不会触发selectionchanged事件

2024/11/18 8:07:48 来源:https://blog.csdn.net/shenshendeai/article/details/139501770  浏览:    关键词:listbox有scrollviewer,点击后不会触发selectionchanged事件

这个问题是因为在ListBox中的ScrollViewer处于焦点状态时,SelectionChanged事件没有触发。这通常是因为ScrollViewer在处理鼠标事件时会优先于ListBox。

为了解决这个问题,可以通过以下方法来确保SelectionChanged事件在ListBox中被触发:

在ListBox的ItemContainerStyle中添加一个触发器,当ListBoxItem得到焦点时,设置其IsSelected属性为True

<ListBox>

<ListBox.ItemContainerStyle>

<Style TargetType="ListBoxItem">

<Style.Triggers>

<Trigger Property="IsMouseOver" Value="True">

<Setter Property="IsSelected" Value="True"/>

</Trigger>

</Style.Triggers>

</Style>

</ListBox.ItemContainerStyle>

<!-- ListBox items here -->

</ListBox>

    <ListBoxx:Name="FaultInfoList"Width="220"ItemsSource="{Binding RealTimeFaultList}"><ListBox.ItemContainerStyle><Style TargetType="ListBoxItem"><Style.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="IsSelected" Value="True" /></Trigger></Style.Triggers></Style></ListBox.ItemContainerStyle><i:Interaction.Triggers><i:EventTrigger EventName="SelectionChanged"><i:InvokeCommandAction Command="{Binding DataContext.OpenDeviceDetailViewCommand, ElementName=mainWindow}" CommandParameter="{Binding ElementName=FaultInfoList, Path=SelectedItem}" /></i:EventTrigger></i:Interaction.Triggers><ItemsControl.ItemTemplate><DataTemplate><BorderMargin="0"BorderBrush="Red"BorderThickness="2,2,2,2"CornerRadius="3"><StackPanel Margin="2,0,0,0"><StackPanel><ScrollViewerxmlns:sys="clr-namespace:System;assembly=mscorlib"Height="70"Panel.ZIndex="-2"BorderThickness="0"VerticalScrollBarVisibility="Auto"><ScrollViewer.Resources><sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">4</sys:Double><sys:Double x:Key="{x:Static SystemParameters.HorizontalScrollBarHeightKey}">4</sys:Double></ScrollViewer.Resources><TextBlockWidth="175"Margin="10,10,10,10"Text="{Binding Current_fault}"TextWrapping="Wrap"><i:Interaction.Triggers><i:EventTrigger EventName="MouseEnter"><i:InvokeCommandAction Command="{Binding DataContext.FaultDetailTextBlockMouseEnterCommand, ElementName=mainWindow}" CommandParameter="{Binding}" /></i:EventTrigger><i:EventTrigger EventName="MouseLeave"><i:InvokeCommandAction Command="{Binding DataContext.FaultDetailTextBlockMouseLeaveCommand, ElementName=mainWindow}" CommandParameter="{Binding}" /></i:EventTrigger></i:Interaction.Triggers></TextBlock></ScrollViewer></StackPanel></Border></DataTemplate></ItemsControl.ItemTemplate></ListBox>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com