Bouton à l'intérieur d'un WPF affichage de la Liste/grille de données

Je suis en train d'essayer d'obtenir la valeur/l'ID de l'cliqué ligne. Si la ligne est sélectionnée, cela fonctionne bien. Mais si j'essaie juste de cliquez sur le bouton à l'intérieur, le client sélectionné est null. Comment dois-je faire les Paramètres de Commande ici.
J'ai essayé de voir les réponses aux questions suivantes:

ListView et des Boutons à l'intérieur de ListView

WPF - Listview avec bouton

Voici le code:

<Grid>
    <ListView ItemsSource="{Binding Path=Customers}"
          SelectedItem="{Binding Path=SelectedCustomer}"
          Width="Auto">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="First Name">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Margin="6,2,6,2">
                                <TextBlock Text="{Binding Name}"/>
                            </StackPanel>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn Header="Address">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Margin="6,2,6,2">
                                <Button Content="Address" Command="{Binding Path=DataContext.RunCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}}"/>
                            </StackPanel>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>

</Grid>

public class VM : ViewModelBase
{
    public RelayCommand RunCommand { get; private set; }
    private ObservableCollection<Customer> _Customers;
    public ObservableCollection<Customer> Customers
    {
        get { return _Customers; }
        set
        {
            if (value != _Customers)
            {
                _Customers = value;
                RaisePropertyChanged("Customers");
            }
        }
    }

    private Customer _SelectedCustomer;
    public Customer SelectedCustomer
    {
        get { return _SelectedCustomer; }
        set
        {
            if (value != _SelectedCustomer)
            {
                _SelectedCustomer = value;
                RaisePropertyChanged("SelectedCustomer");
            }
        }
    }

    public VM()
    {
        Customers = Customer.GetCustomers();
        RunCommand = new RelayCommand(OnRun);
    }

    private void OnRun()
    {
        Customer s = SelectedCustomer;
    }
}

dans le OnRun Méthode, le Client sélectionné est de venir en null. Je veux de la ligne de données(client) ici. Comment puis-je faire cela?

Donc, si la ligne est sélectionnée et que vous cliquez sur le bouton ça marche? Avez-vous essayé de sélectionner automatiquement la ligne sur laquelle le bouton est cliqué?
Qu'entendez-vous par là? Comment voulez-vous sélectionner automatiquement la ligne? L'utilisateur sélectionne. Je suis confus

OriginalL'auteur katie77 | 2011-10-24