如何在ListView行上单击?

时间:2016-08-30 10:46:48

标签: c# wpf

我有ListView基本结构:

<ListView Name="Playing" ItemsSource="{Binding Source={StaticResource GroupedItems}}">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Date" Width="150" DisplayMemberBinding="{Binding Path = MatchDate}"/>
             <GridViewColumn Header="Minute" Width="70" DisplayMemberBinding="{Binding Path = MatchMinute}"/>
         </GridView>
     </ListView.View>
</ListView>

我从ObservableCollection填充此列表。在此列表中显示事件列表。现在每个事件都有一个id,我已经保存为链接。该链接是与此事件关联的页面。

我需要做的是显示一个包含此事件详细信息的新窗口,该窗口应该从用户单击特定行时触发的事件中打开。

现在的主要问题是:如何以编程方式为每行的link(id)分配事件?

1 个答案:

答案 0 :(得分:1)

您必须设置ItemContainerStyle ListView属性EventSetter,其中ListViewItem PreviewMouseLeftButtonDown会为 <ListView> <ListView.View> <GridView> ...... </GridView> </ListView.View> <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListViewItem_PreviewMouseLeftButtonDown" /> </Style> </ListView.ItemContainerStyle> </ListView> private void ListViewItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { var item = sender as ListViewItem; var context = item.DataContext as yourdatatype; //open your new window } 事件提供border-right: 1px solid #2e2e2e

.form-group

然后在其处理程序中,您可以根据从DataContext获取的信息打开一个新窗口:

/* My styles */

.form-group {
  border-right: 1px solid #2e2e2e;
  padding: 0 10px;
}

.bootstrap-select.btn-group .dropdown-toggle {
    padding: 15px 40px 15px 0;
}