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>

    <ListBox
        x: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>
                <Border
                    Margin="0"
                    BorderBrush="Red"
                    BorderThickness="2,2,2,2"
                    CornerRadius="3">
                    <StackPanel Margin="2,0,0,0">
                       
                        <StackPanel>
                            <ScrollViewer
                                xmlns: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>
                                <TextBlock
                                    Width="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>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值