2016-03-26 12 views
0

グリッドがあり、onclickイベントを追加したいと思います。GridViewのクリックイベントで

<ListView 
    HorizontalAlignment="Stretch" 
    Margin="10" 
    x:Name="BooksListView" 
    GridViewColumnHeader.Click="SortBooks" 
    > 
    <ListView.View> 
     <GridView></GridView> 
    </ListView.View> 
</ListView> 

私はこのSO questionから受け入れ答えを試してみたが、item.IsSelectedは常にfalseです。

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

C#コード:

private void ListViewItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    var item = sender as ListViewItem; 
    if (item != null && item.IsSelected) // IsSelected is always false 
    ... 
} 

私は、このチェックを外し、またはそれを行うには良い方法はありますでしょうか?

+0

このチェックはビジネスロジックにとって重要でない場合は削除できます。 –

+0

必要に応じてitem.IsSelectedをtrueに設定できますが、イベントハンドラメソッドが終了した直後にプロパティが設定されると思われます。 MouseLeftButtonDown、MouseDown、またはMouseLeftButtonUpイベントを使用し、プレビューイベントは使用しないことをお勧めします。アイテムを選択すると、イベントが発生し、ハンドラが実行され、IsSelectedがtrueになることが保証されます。そのチェックを外すか、プレビューでないイベントを使用してください。私はMouseUpイベントを使用する傾向があるので、マウスをアイテムからドラッグして、誤って選択してアイテムを出させることができます。 – SimperT

+0

@Matt答えがあなたのために機能しましたか? –

答えて

0

これはプレビューイベントであるため、アイテムを選択するにはまだ到達していません。そのため、item.IsSelectedは常にfalseを返します。あなたはそれが目標だ到達する前にイベントをキャンセルしたいと言う場合は

詳細情報は、基本的には、プレビューイベントが処理され、ここでWhat are WPF Preview Events?

提供されています。 「バブリング」タイプのイベントを処理する方が一般的です。多分MouseLeftButtonDownを試してみてください。ここでもう少し比較がありますDifference between PreviewMouseLeftButtonDown and MouseLeftButtonDown WPF

+1

これは答えではありません。 –

+0

@TrevorClarke詳細を提供するように編集されました –

関連する問題