Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] WPF: ottenere una determinata istanza di una window
Forum - C# / VB.NET - [VB.NET] WPF: ottenere una determinata istanza di una window

Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Segnala al moderatore
Postato alle 17:29
Lunedì, 12/07/2010
Gente, starò domandandovi una gran cacchiata, ma, mi riderete dietro, non riesco ad aprire da un Command una Window e chiuderla da un altro Command, della serie:
la mia applicazione segue il MVVM, nella MainWindow un pulsante mi visualizza una finestra che ha come datacontext una nuova fattura, e i controlli bindati a questa per modificare i vari valori. Al pulsante di conferma dovrei abbinare un command che chiuda la finestra e aggiunga la fattura-datacontext alla collezione che si trova nel ViewModel.
I comandi li definisco nel ViewModel.
Io ho provato a fare cosi

Codice sorgente - presumibilmente VB.NET

  1. Dim FW As FatturaWindow
  2.         Private _Aggiungi As ICommand
  3.         Public ReadOnly Property Aggiungi() As ICommand
  4.             Get
  5.             '.....
  6.             End Get
  7.         End Property
  8.  
  9.  
  10.         Private Function CanAggiungiExecute(ByVal param As Object) As Boolean
  11.             Return True
  12.         End Function
  13.  
  14.  
  15.         Private Sub AggiungiExecute(ByVal param As Object)
  16.             Try
  17.                 FW = New FatturaWindow With {.DataContext = New Fattura}
  18.             Catch ex As Exception
  19.                 MessageBox.Show(ex.ToString)
  20.             End Try
  21.         End Sub



e una cosa simile per la conferma

Codice sorgente - presumibilmente VB.NET

  1. Private Sub ConfermaExecute(ByVal param As Object)
  2.             Try
  3.                 Fatture.Add(CType(FW.DataContext, Fattura))
  4.                 SalvaFatture()
  5.                 FW.Close()
  6.             Catch ex As Exception
  7.                 MessageBox.Show(ex.ToString)
  8.             End Try
  9.         End Sub



ConfermaExecute genera un'eccezione per FW come oggetto non impostato su un'istanza di oggetto..

abbiate pietà :D

Ultima modifica effettuata da dedalux il 12/07/2010 alle 17:39
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 19:53
Lunedì, 12/07/2010
E' un problema tipico quando si inizia con il MVVM.

Infatti è normale che il ViewModel non sappia assolutamente nulla della vista che lo usa, sennò non ci sarebbe disaccoppiamento; è anche vero però che in questo modo il ViewModel ha difficoltà a comunicare in maniera più approfondita con le viste.

Ti suggerisco la lettura di questo articolo: http://www.winfxitalia.com/articoli/presentation-foundatio ...




PM Quote
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Segnala al moderatore
Postato alle 20:54
Lunedì, 12/07/2010
L'avevo gia incontrato sto articolo, ma nn me lo sono mai letto >.<
ora rimedio,
grazie Netarrow

PM Quote