+1  A: 

Can you change view model? I think will be better, if you add bool property IsSelected to Person. And bind it to checkbox:

<CheckBox IsChecked="{Binding IsSelected}"/>

Command is not requared and you can add some functionality in setter of property IsSelected.

SeeSharp
Good answer (+1). Also see my answer, which addresses how he can do it without changing his ViewModel.
Ray Burns
A: 

The PersonSelectedCommand has to be in the Person scope. So you'll have a list of commands when you bind to a list of persons. Hence whenever a person is selected, you will have the corresponding command to be executed.

Else you can find out the Ancestor using RelativeSource in Binding and set the PersonSelectedCommand that way. Check this answer: http://stackoverflow.com/questions/3012586/is-there-a-simple-way-to-specify-a-wpf-databinding-where-the-path-is-one-level/3013440#3013440

Veer
+2  A: 

I liked SeeSharp's answer, but to directly answer your question, all you need to do is change your CheckBox's Command binding to:

Command="{Binding DataContext.PersonSelectedCommand,
                  RelativeSource={RelativeSource FindAncestor,ListView,1}}"

This is preferable to SeeSharp's answer only when you need more control than simply binding the IsSelected property will give you. Otherwise go with binding IsSelected.

Ray Burns
This is what I was looking for. My CheckBox is already has a binding for IsSelected property (I didn't mentioned in the question). And as you said I need more control. Thanks.
123Developer