<i:Interaction.Triggers> <i:EventTrigger EventName="MouseDown"> <i:InvokeCommandAction Command="{Binding Source={StaticResource Locator},Path=ReportItemChoose.ChangeCommand1}" CommandParameter="{Binding}" /> </i:EventTrigger> </i:Interaction.Triggers> 触发器只有当点击文字时才能触发,点击当前行触发不了
时间: 2024-04-15 22:27:07 浏览: 121
触发器Triggers、MultiTrggers、EventTrigger应用案例
5星 · 资源好评率100%
你提到的代码片段是使用了 Interaction.Triggers 和 EventTrigger 来触发命令的一种方式。根据你的描述,它只有在点击文字时才能触发命令,而点击当前行则无效。
这种情况可能是因为 TextBlock 控件的点击事件遮挡了整个 ListBoxItem 的点击事件。为了解决这个问题,你可以尝试将触发器放在 ListBoxItem 的外部,而不是 TextBlock 内部。
你可以尝试修改代码如下:
```xml
<ListBox.ItemTemplate>
<DataTemplate>
<ListBoxItem>
<ListBoxItem.Template>
<ControlTemplate TargetType="ListBoxItem">
<TextBlock VerticalAlignment="Center" Text="{Binding CanSetName}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown">
<i:InvokeCommandAction Command="{Binding Source={StaticResource Locator},Path=ReportItemChoose.ChangeCommand1}"
CommandParameter="{Binding}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBlock>
</ControlTemplate>
</ListBoxItem.Template>
</ListBoxItem>
</DataTemplate>
</ListBox.ItemTemplate>
```
通过将触发器放在 ListBoxItem 的 ControlTemplate 中,整个 ListBoxItem 包括 TextBlock 在内都将响应点击事件,并触发相应的命令。请尝试这种修改,看看是否能够解决你遇到的问题。
阅读全文