2016-08-30 8 views
0

私は基本的な構造でListViewをしました: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

あなたはListViewItemPreviewMouseLeftButtonDownイベントのためEventSetterを提供しますするListViewItemContainerStyleプロパティを設定する必要があります。

 <ListView> 
     <ListView.View> 
      <GridView> 
       ...... 
      </GridView> 
     </ListView.View> 
     <ListView.ItemContainerStyle> 
      <Style TargetType="ListViewItem"> 
       <EventSetter Event="PreviewMouseLeftButtonDown" 
          Handler="ListViewItem_PreviewMouseLeftButtonDown" /> 
      </Style> 
     </ListView.ItemContainerStyle> 
    </ListView> 

次にそのハンドラの中で、あなたがそののDataContextから取得する情報に基づいて新しいウィンドウを開くことができます。

private void ListViewItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { 
     var item = sender as ListViewItem; 
     var context = item.DataContext as yourdatatype; 

     //open your new window 

    } 
+0

これも申し訳ありませんが、 '' item'変数 – AgainMe

+0

@AgainMeでnull'なのでを返します私の悪い私は答えを更新しました。 – Sameed

+0

ちょうど問題です: '' Models.Event 'は 'type'です。指定されたコンテキストで有効な構造体ではありません' 'Models.Event'は' yourdataObject'で入力したクラスです – AgainMe

関連する問題