my.ASPItalia.com
ASP.NET
|
HTML5
|
LINQ e Entity Framework
|
Silverlight
|
Windows Phone
|
.NET Framework
|
Libro WP7
|
Libro HTML5
|
Corso on-site HTML5
Iscriviti
Login
Newsletter
Home
Articoli
Script
Notizie
FORUM
Blogs
Lab
Media
Tutorials
Corsi
Libri
Tags
Tutti i forum
Ricerca
FAQ
Fai una domanda
WPF Master Detail Lazy Loading
in
.NET Framework
>
Windows Presentation Foundation e WinForms
Ultimo messaggio
fileman
il 19 agosto 2010 alle 19:08
993 messaggi
dal 02 ottobre 2006
Contributi
www.filardo.it
Ciao, ho una situazione Master Detail, dove ci sono molti Detail, e quindi volevo sfruttare il lazy loading di EF per recuperare solo i dati necessari.
Ho provato a mettere i vari controlli e DataGrid in più tabitem, ma il binding (..."itemssouce={Binding XYZ}"..) viene eseguito su tutti i controlli indipendentemente dal tabitem selezionato.
Qual'è la strada da seguire? Associare un Command al tabitem ed far caricare a lui i dati, usare Trigger, o altro, non ne ho idea, è la prima volta che uso WPF.
Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna.
-Albert Einstein-
Rispondi
Quoting
Cradle
il 20 agosto 2010 alle 10:44
1.856 messaggi
dal 01 luglio 2004
Contributi
www.aspitalia.com
|
Blog
Usi MVVM?
Se no, dovresti
Se sì, immagino tu abbia tante proprietà quanti sono le differenti collezioni da mostrare, che inizialmente sono vuote e valorizzi con la collezione di dettagli della entity nel momento in cui attivi il corrispondente tab.
Does it make sense?
m.
Rispondi
Quoting
fileman
il 20 agosto 2010 alle 23:06
993 messaggi
dal 02 ottobre 2006
Contributi
www.filardo.it
Si MVVM
le collezioni le devo valorizzare con query specifiche tipo la seguente,
private ObservableCollection<Dettaglio1> _dettaglio1
public ObservableCollection<Dettaglio1> Dettaglio1
{
get;
set
{
_dettaglio1 = repository<Dettaglio1>.Where(m => m.ID == MasterListBoxSelectedItem.ID);
NotifyPropertyChanged("Dettaglio1");
}
}
o c'è un modo per usare il lazy loading di EF?
Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna.
-Albert Einstein-
Rispondi
Quoting
Cradle
il 21 agosto 2010 alle 00:43
1.856 messaggi
dal 01 luglio 2004
Contributi
www.aspitalia.com
|
Blog
Uhm... il codice del tuo setter non mi è mica chiarissimo
Comunque, il fatto che tu inizializzi una collection nel momento in cui la usi è già di per sé un lazy loading. Per usare quello di ef, non ti resta che assegnare alla collection del viewmodel quella del dettaglio prelevata direttamente dalla entity.
Ciao
m.
Rispondi
Quoting
fileman
il 21 agosto 2010 alle 14:52
993 messaggi
dal 02 ottobre 2006
Contributi
www.filardo.it
c'è qualcosa che mi sfugge.
partiamo da capo, ho una listbox che quando seleziono un item mi imposta la proprietà del ViewModel SelectedItem. poi ci sono delle textbox con il binding a SelectedItem.Nome, etc.. e tutto va bene.
Siccome ho tanti datagrid da caricare, ma non è detto che vanno modificati tutti pensavo di dividerli in vari TabItem e di valorizzare il contenuto di quelli selezionati, e qui vengono i problemi:
<TabItem1>
<datagrid ItemsSource ={binding SelectedItem.Dettaglio1}/>
<TabItem2>
<datagrid ItemsSource ={binding SelectedItem.Dettaglio2}/>
....
facendo così vengono caricati tutti quanti, sia i dati di Dettaglio1 che Dettaglio2, etc... cosa che non va bene.
Se non ho capito male quello che mi hai detto prima, ho fatto:
View:
<TabItem1>
<datagrid1 ItemsSource ={binding Dettaglio1}/>
<TabItem2>
<datagrid2 ItemsSource ={binding Dettaglio2}/>
ViewModel:
private ICollection<Dettaglio1> _dettaglio1;
public ICollection<Dettaglio1> Dettaglio1
{
get { return _dettaglio1; }
set
{
_dettaglio1 = SelectedItem.Dettaglio1;
}
}
(Stessa cosa per Dettaglio2, Etc...)
ma quando viene notificato NotifyPropertyChanged("SelectedItem"), le TextBox cambiano senza problemi, mentre Dettaglio1, Dettaglio2, etc... nel VM non vengono mai valorizzati.
Andando contro il pattern MVVM da code behind della View tramite EventHandler GotFocus del TabItem eseguendo "datagrid1.ItemsSource = vm.Dettaglio1, etc..." funziona correttamente, cioè solo quando seleziono il TabItem desiderato.
Si riesce a capire dove sbaglio o cosa manca?
Mi sa che è meglio se vado avanti con la strada mista e quando ho più dimestichezza col WPF faccio un refactoring in MVVM puro, che ne dici?
Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna.
-Albert Einstein-
Rispondi
Quoting
Salto rapido
Ultimi messaggi
Tutti i forum
Ricerca
Utenti online
ASP.NET
ASP.NET 2.0
ASP.NET 3.5
ASP.NET 4.0
.NET Framework
Silverlight
Windows Phone
Windows Presentation Foundation e WinForms
Windows Communication e Workflow
ASP - avanzato
ASP - base
SQL Server e MySQL
Libri
Hosting
Altri linguaggi e tecnologie
Windows Server, IIS & Security
E-commerce
OT
Commenti: blogs e notizie
Eventi
Torna al forum
| Feed
RSS
ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
In primo piano
Speciale web mobile: costruire applicazioni con ASP.NET, jQuery Mobile e PhoneGap
Speciale Silverlight 5: tutte le novità
Rilasciato il bollettino MS11-100 per risolvere i problemi di attacchi DoS di ASP.NET
I più letti di oggi
Windows Phone 7.5 Developer Day: Introduzione allo sviluppo
Introduzione ad ASP.NET 3.5
Windows Phone 7.5 Developer Day: Live Tiles e Push Notifications
Speciale web mobile: costruire applicazioni con ASP.NET, jQuery Mobile e PhoneGap
Rilasciato Entity Framework 4.3
Windows 8 su ARM: avrà il desktop, Office e il connected standby
Sovrascrivere il tipo di esecuzione di una query PLINQ
Usare Entity Framework con ADO.NET Data Services
Windows Phone 7.5 Developer Day with Nokia and Microsoft - Roma, Milano
Microsoft WebCamp - Roma, Milano
Media
Windows Phone 7.5 Developer Day: marketplace e strumenti per monetizzare le app
Windows Phone 7.5 Developer Day: costruire app con Visual Studio 2010 e Windows Phone Runtime
Tutti i media
In evidenza
Speciale web mobile: costruire applicazioni con ASP.NET, jQuery Mobile e PhoneGap
Speciale Silverlight 5: tutte le novità
Community Days 2012 - Milano
Sviluppare applicazioni per Windows Phone: scopri come fare con il nostro nuovissimo libro!
Sviluppa le applicazioni del futuro oggi: impara con il nostro libro HTML5 Espresso!
Windows 8 su ARM: avrà il desktop, Office e il connected standby
Rilasciato Entity Framework 4.3
Sovrascrivere il tipo di esecuzione di una query PLINQ
MISC
I nostri autori
Collabora con noi!
Media Kit - Pubblicità sul nostro network