【发布时间】:2020-10-23 07:11:15
【问题描述】:
我会在 ListView 中的项目上的左键双击事件上绑定一个 ICommand。 我尝试了下面的解决方案但无法正常工作,当我单击 ListView 而不是列表中的项目时调用 Execute 函数。有人有什么建议吗?
<ListView x:Name="history_list_view" HorizontalAlignment="Left" Height="210" Margin="25,194,0,0"
VerticalAlignment="Top" Width="656" Background="#FF2F2B2B" Foreground="White"
ItemsSource="{Binding Items}"
SelectedItem="{Binding SelectedItem}">
<ListView.InputBindings >
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding SelectedItemCommand}" CommandParameter="{Binding SelectedItem}"/>
</ListView.InputBindings>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#7f8c8d"/>
<Setter Property="BorderThickness" Value="0" />
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#7f8c8d"/>
<Setter Property="BorderThickness" Value="0" />
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView >
<GridView.ColumnHeaderContainerStyle>
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Left" />
</Style>
</GridView.ColumnHeaderContainerStyle>
<GridViewColumn Header="Lot" Width="170" DisplayMemberBinding="{Binding Lot}"/>
<GridViewColumn Header="Code" Width="160" DisplayMemberBinding="{Binding Code}"/>
<GridViewColumn Header="Rev" Width="80" DisplayMemberBinding="{Binding Rev}"/>
<GridViewColumn Header="User" Width="140" DisplayMemberBinding="{Binding User}"/>
<GridViewColumn Header="Date" Width="100" DisplayMemberBinding="{Binding Date}"/>
</GridView>
</ListView.View>
</ListView>
【问题讨论】:
-
那是因为你在 ListView 上有输入绑定,你应该为 listViewItem 创建一个。 SO question
-
在
ItemContainerStyle中为MouseDoubleClick事件添加一个EventSetter并从命令处理程序调用命令,或者使用附加的行为来执行命令。 -
@XAMlMAX 我尝试了两种灵魂,但仍然无法正常工作
-
@mm8 可以发个代码吗?
标签: c# wpf listview mvvm binding