我有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)分配事件?
答案 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;
}