2017-05-21 4 views
0
<ScrollViewer VerticalScrollBarVisibility="Auto"> 
     <ListBox x:Name="RootListView" ItemsSource="{Binding Ratings}"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <Grid ShowGridLines="True"> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="auto" /> 
          <RowDefinition Height="auto" /> 
          <RowDefinition Height="Auto" /> 
          <RowDefinition Height="Auto" /> 
          <RowDefinition Height="40" /> 
         </Grid.RowDefinitions> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition /> 
          <ColumnDefinition /> 
         </Grid.ColumnDefinitions>  

         .... Some TextBoxes with Labels are here to fill the grid ..... 

         <Button Grid.Row="4" Grid.Column="1" Content="Delete" 
           Command="{Binding ElementName=RootListView, Path=DataContext.DeleteRatingCommand}" 
           CommandParameter="{Binding ElementName=RootListView, Path=SelectedItem}"> 

         </Button> 
        </Grid> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
</ScrollViewer> 

Ratings dans mon modèle de vue est le suivant:WPF SelectedItem passé en tant que paramètre de commande ne retourne pas la valeur

public ObservableCollection<RatingModel> Ratings; 

Et le DeleteRatingCommand est un objet ICommand.

Il y a toute une collection de classements affichés dans cette vue (une grille contenant des informations), chacun a un bouton de suppression. Lorsque le bouton de la note correspondante est pressé, je veux envoyer l'objet de notation au modèle de vue avec la propriété SelectedItem. Bien que la méthode liée soit appelée, rien n'est passé avec le paramètre SelectedItem, une valeur null spécifiquement. Comment puis-je utiliser correctement SelectedItem dans ce cas pour envoyer des informations au modèle de vue sur la classification à supprimer? Y a-t-il d'autres possibilités? Je ne suis pas sûr que cette approche soit correcte.

Répondre

1

Je suppose que cliquer sur le bouton ne définit pas réellement la propriété SelectedItem.

Essayez de modifier la liaison aux données de contexte de ligne.

CommandParameter="{Binding Path=.}" 
+0

C'est exactement ce que j'ai imaginé. Vous pouvez même le simplifier à 'CommandParameter =" {Binding} "' – yoger