Domanda

Sono appena iniziato con collezioni (ObservableCollections) e ho colpito un muro che ho assunto sarebbe stato facile. Sono sicuro che è facile, ma io non sto solo trovare la risposta.

Ho uno schermo WPF con un DataGrid a sinistra e caselle di testo a destra dello schermo. Il DataGrid è associato a ObservableCollection (Attività) e posso cliccare su e giù per il controllo DataGrid e vedere le mie caselle di testo rinfrescare con le informazioni corrette. Posso quindi modificare le informazioni nelle caselle di testo e salvarlo di nuovo al DB. Tutto funziona perfettamente!

Tuttavia, quando si tratta di aggiungere un record alla collezione mi sono perso per l'approccio corretto. Sto utilizzando il metodo Add come illustrato di seguito, ma come faccio a passare a questo disco appena creato in modo che possa essere modificato? Ho provato una dozzina di approcci, ma devo ancora trovare un approccio corretto. Le caselle di testo appena rimangono concentrati sull'ultimo record modificato. Tutte le idee?

Private Activities As ObservableCollection(Of ActivityRecord)

Private Sub AddMode()
    Dim _ActivityRecord As New ActivityRecord(0, DateTime.Now, Nothing, "", gWorkerID, "")
    Activities.Add(_ActivityRecord)
'Code to move to the newly created record should go here
È stato utile?

Soluzione

In WPF, ogni ItemsControl controllo derivato (elencare il DataGrid) nascosto utilizza un derivato del CollectionView per facilitare la navigazione tra i record / voci - in effetti è la classe che fornisce il di valuta meccanismo che aiutano altri controlli (come box) determinano quali dati elemento vincolato è corrente .

Se si crea un nuovo oggetto e aggiungerlo al vostro ObservableCollection, è possibile utilizzare uno dei metodi MoveXXX del CollectionView di passare a fare quella corrente elemento. È possibile (a seconda di che tipo di CollectionView si ottiene) anche chiamare il metodo Add sulla CollectionView, e chiamerà automaticamente il metodo Add sul ObservableCollection sottostante.

In entrambi i casi, retriving un riferimento al CollectionView è il segreto. È possibile utilizzare il metodo statico del CollectionView (non ricordo il suo nome) per recuperare la vista in uso per la DataGrid, o (e questo è il mio metodo preferito) si può esplicitamente creare un ListCollectionView e vincolare il proprio DataGrid ad esso, al posto del ObservableCollection .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top