2012-04-12 15 views
5

Vorrei visualizzare una riga della mia griglia di dati in modo programmatico. Ho più di 100 file. Quando creo una riga (che sto facendo aggiungendo un oggetto ad una collezione osservabile) vorrei che quella nuova riga fosse selezionata e mostrata. Sono stato in grado di selezionare la nuova riga nel mio codice ma non ho potuto fare lo scrolling. Più sopra voglio che la prima cella della riga sia in modalità di modifica in modo che l'utente possa inserire del testo. Sto seguendo lo schema MVVM per l'applicazione e vorrei mantenere il codice zero nelle mie visualizzazioni. Come posso raggiungere questo obiettivo?Visualizzare in modo programmatico una riga Datagrid in WPF, MVVM

Qualsiasi aiuto o suggerimento sarà apprezzato ....

Aggiornamento:

Questo quello che ho fatto nel mio XAML

<telerik:RadGridView ItemsSource="{Binding AllPartClasses}" 
        SelectedItem="{Binding SelectedPartClassViewModel, Mode=TwoWay}"   
        SelectionMode="Single" IsSynchronizedWithCurrentItem="True"> 

nel mio modello vista ho fatto questo

void AddNewPartClassExecute() 
    { 
     PartClass newPartClass = new PartClass(); 
     PartClassViewModel tempPartClass = new PartClassViewModel(newPartClass); 
     tempPartClass.IsInValid = true; 
     AllPartClasses.Add(tempPartClass); 
     SelectedPartClassViewModel = tempPartClass; 
     Global.DbContext.PartClasses.AddObject(newPartClass); 

     //OnPropertyChanged("AllPartClasses"); 
    } 
public PartClassViewModel SelectedPartClassViewModel 
    { 
     get 
     { 
      return _selectedPartClassViewModel; 
     } 
     set 
     { 
      _selectedPartClassViewModel = value; 
      OnPropertyChanged("SelectedPartClassViewModel"); 
     } 
    } 

Non ha funzionato per me.

risposta

2

Quando si segue MVVM modello non si deve fare una roba specifica-UI come lo scorrimento da un codice.

soluzione sarebbe semplice - basta legano DataGrid.SelectedItem a una proprietà ViewModel e quando si aggiunge un nuovo elemento della collezione articoli appena aggiornare una struttura destinata a SelectedItem quindi sarebbe riferimento alla voce e dati griglia appena aggiunto deve selezionare una riga appropriata automaticamente.

<DataGrid 
    ItemsSource="{Binding UnderyingItemsCollection}" 
    SelectedItem="{Binding RecentlyAddedItem, Mode=TwoWay}" 
    IsSynchronizedWithCurrentItem="True"> 
+1

Grazie molto per lo sguardo. Ho fatto quello che mi hai suggerito. Ma ancora nessuna fortuna. Ho aggiunto il mio codice nella sezione di aggiornamento. per favore fatemi sapere se mi manca qualcosa. ho ottenuto la riga selezionata, ma cosa devo fare ottenere datagrid per scorrere alla riga inferiore ...? – IamaC

+0

Ho provato, ma non sta scorrendo alla riga 'SelectedItem'. Ho provato a cambiare 'SelectedItem' da viewModel, tuttavia' DataGrid' non sta scorrendo alla riga 'SelectedItem'. – StepUp

5

Per il regolare WPF DataGrid è possibile utilizzare ScrollIntoView. Nella tua vista collegare l'evento SelectionChanged al seguente nel tuo file cs code-behind di vista.

private void OnSelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    Selector selector = sender as Selector; 
    DataGrid dataGrid = selector as DataGrid; 
    if (dataGrid != null && selector.SelectedItem != null && dataGrid.SelectedIndex >= 0) 
    { 
     dataGrid.ScrollIntoView(selector.SelectedItem); 
    } 
} 
Problemi correlati