2017-05-21 17 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을 반환하지 않는 명령 매개 변수로 전달됩니다.WPF의 selectedItem 내보기 모델의 값을

이보기 (정보가 포함 된 그리드)의 전체 모음집이 있으며, 모두 삭제 단추가 있습니다. 해당 등급의 버튼을 누르면 SelectedItem 속성이있는보기 모델에 등급 객체를 보내려고합니다. 바인드 된 메서드가 호출되었지만 SelectedItem 매개 변수 (특히 null 값)는 전달 된 것이 없습니다. 이 경우 적절하게 SelectedItem을 사용하여 삭제할 등급에 대한 정보를보기 모델에 보내려면 어떻게해야합니까? 다른 가능성이 있습니까? 이 방법이 올바른지 확실하지 않습니다.

답변

1

버튼을 클릭해도 실제로 SelectedItem 속성이 설정되지 않는다고 가정합니다.

바인딩을 행 컨텍스트 데이터로 변경해보십시오.

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

그건 내가 생각한 것입니다. 당신은'CommandParameter = "{Binding}"' – yoger