2012-06-28 11 views
6

Ho un DataGrid con casella di controllo implementato su di esso utilizzando questo codice che ho trovato su Internet.WPF MVVM recupera righe selezionate datagrid

<my:DataGrid.RowHeaderTemplate> 
    <DataTemplate> 
    <Grid> 
     <CheckBox IsChecked="{Binding Path=IsSelected, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type my:DataGridRow}}}" /> 
    </Grid> 
    </DataTemplate> 
</my:DataGrid.RowHeaderTemplate> 

Ma come posso ottenere le righe selezionate? Sto usando WVF MVVM.

+1

favore potete gente aggiungere un commento a mettere in discussione, quando voi ragazzi stanno downvoting. Quindi, sapranno PERCHÉ le loro domande sono state ridotte a zero. Grazie. –

+0

Capito .. Grazie. – wipindipy10

risposta

9

dal momento che si sta utilizzando il modello MVVM è possibile dichiarare una ViewMode come questo:

public class MyViewModel 
{ 
    public ObservableCollection<Prototype> Items { ... } 
    public Prototype SelectedItem SelectedItem { ... } 
} 

Dopo, nel vostro datagrid, è possibile dichiarare vincolante in questo modo:

<DataGrid ItemSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"... /> 

Nella tua codice è possibile utilizzare la proprietà "SelectedItem" per ottenere la riga datagrid selezionata corrente. Altrimenti se si intende "controllato" righe, è possibile interrogare la vostra collezione osservabile:

var selectedRows = ViewModel.Items.Where(i => i.IsSelected);