我有以下ListView
<ListView Name="TrackListView">
<ListView.View>
<GridView>
<GridViewColumn Header="Title" Width="100"
HeaderTemplate="{StaticResource BlueHeader}"
DisplayMemberBinding="{Binding Name}"/>
<GridViewColumn Header="Artist" Width="100"
HeaderTemplate="{StaticResource BlueHeader}"
DisplayMemberBinding="{Binding Album.Artist.Name}" />
</GridView>
</ListView.View>
</ListView>
如何将事件附加到将在双击绑定项时触发的每个绑定项?
发布于 2015-02-18 05:05:00
我的解决方案是基于@epox_sub's answer的,您应该了解如何将事件处理程序放在XAML中的什么位置。代码隐藏对我不起作用,因为我的ListViewItems
是复杂对象。@sipwiz's answer是一个很好的提示,告诉你应该去哪里找…
void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var item = ListView.SelectedItem as Track;
if (item != null)
{
MessageBox.Show(item + " Double Click handled!");
}
}
这样做的好处是你得到了SelectedItem
的DataContext绑定(本例中是Track
)。Selected Item起作用是因为第一次双击选中了它。
发布于 2020-02-16 21:33:33
我使用的替代方法是Event To Command,
<ListView ItemsSource="{Binding SelectedTrack}" SelectedItem="{Binding SelectedTrack}" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding SelectTrackCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
...........
...........
</ListView>
发布于 2009-04-08 02:03:14
在您的示例中,您是否正在尝试捕获ListView中的项目被选中或列标题被单击的时间?如果是前者,则需要添加一个SelectionChanged处理程序。
<ListView Name="TrackListView" SelectionChanged="MySelectionChanged">
如果是后者,则必须在GridViewColumn项上使用MouseLeftButtonUp或MouseLeftButtonDown事件的某种组合来检测双击并采取适当的操作。或者,您可以处理GridView上的事件,并从中找出鼠标下面的列标题。
https://stackoverflow.com/questions/728205
复制相似问题