Nella mia applicazione avevo la necessità di navigare tra i
dati di una child window, stile Access tanto per intenderci.
Questa la view in questione, che ha il compito di gestire i
Cespiti in carico.
Al loaded della view viene eseguito il binding dell’oggetto
Cespite recuperato tramite un servizio WCF RIA Service. Nel mio caso il
DocumentContext è il contesto al servizio che gestisce tutto il documento:
ritenute d’acconto, ratei/risconti e cespiti compresi.
readonly DocumentoContext
_documentoContext;Cespite cespite = _documento.Cespite.Count > 0 ? _documento.Cespite.FirstOrDefault()
: new Cespite();
if (_documento.Cespite.Count == 0)
_documento.Cespite.Add(cespite);
LayoutRoot.DataContext = cespite;
A seconda se ne esistono già viene caricato il primo della lista o ne viene creato uno nuovo (in questo modo poi possiamo fare a meno del pulsante Nuovo nella toolbar).
Per passare quindi al cespite successivo o crearne uno di nuovo basta premere il pulsante con la freccia verso destra, al quale è associato il seguente evento:
private
void NextCespiteClicked(object sender, MouseButtonEventArgs
e)
{_index += 1;
if (_index
> _documentoContext.Cespites.Count - 1)
{// Non ci sono cespiti, ne viene aggiunto quindi uno al contesto.
Cespite cespite = new Cespite();
_documento.Cespite.Add(cespite);
// Binding del
cespite appena creato alla view
LayoutRoot.DataContext
= cespite;}
Else
// Viene eseguito il binding del cespite dell'indice corrispondente.
LayoutRoot.DataContext = _documentoContext.Cespites.ElementAt(_index);
}
Invece per andare all’elemento precedente basta premere il pulsante con la freccia verso sinistra al quale è associate il seguente evento:
private
void PreviousCespiteClicked(object sender, MouseButtonEventArgs
e)
{ if(_index >= 1)
{
_index -= 1;
LayoutRoot.DataContext = _documentoContext.Cespites.ElementAt(_index);
}
}
Chiaramente è un
meccanismo alquanto semplice, abbastanza efficace, che può essere esteso a
proprio piacimento.