Ciao a tutti.
Ho una datagrid con datacontext che ha origine da una CollectionViewSource.
Premetto che funziona tutto.
Come da oggetto, stavo provando i command.
Ho dei semplici pulsanti di navigazione, ai quali imposto la disponibilità, mediante il metodo "CanExecute".
Public Class Window1
Dim DataSet As GommistaDataSet
Dim CodVelViewSource As New CollectionViewSource
Private Sub Window_Loaded(sender As System.Object, _
e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
Dim DataSet = CType(Me.FindResource("GommistaDataSet"), GommistaDataSet)
Dim da As GommistaDataSetTableAdapters.CodVelTableAdapter = _
New GommistaDataSetTableAdapters.CodVelTableAdapter()
da.Fill(DataSet.CodVel)
Me.CodVelViewSource = CType(Me.FindResource("CodVelViewSource"), CollectionViewSource)
Me.CodVelViewSource.View.MoveCurrentToFirst()
contatore.Text = Me.CodVelViewSource.View.CurrentPosition + 1
End Sub
Private Sub Favanti_CanExecute(sender As System.Object, _
e As System.Windows.Input.CanExecuteRoutedEventArgs) Handles Favanti.CanExecute
If Me.CodVelViewSource.View.CurrentPosition _
< CType(Me.CodVelViewSource.View, CollectionView).Count - 1 Then
e.CanExecute = True
Else
e.CanExecute = False
End If
End Sub
End Class
Appena lancio il debug, mi restituisce "NullreferenceException non è stata gestita dal codice utente. Riferimento a un oggetto non impostato su un'istanza di oggetto.", evidenziando la CollectionViewSource come causa.
Ho dichiarato il Dataset e la CollectionViewSource a livello di classe, per poterli raggiungere anche al di fuori dell'evento Load.
La valorizzazione della istanza, avviene all'evento Load.
Se la valorizzo *anche* all'interno dell'evento CanExecute, naturalmente funziona, quindi ne deduco che il suddetto evento venga generato prima di quello Load.
Come posso evitare la schifezza di valorizzare la CollectionViewSource, per ogni CanExecute?...
So di essermi perso in un bicchier d'acqua, ma ci sto diventando scemo. Scusate.
Grazie in anticipo.
F.