Login Register
domenica 20 maggio 2012
 
Forums

I Forum di WPF Tips & Tricks
Binding to all controla of grid
Last Post 21 giu 2011 02:31 by Roberto Sarati. 5 Replies.
Printer Friendly
Sort:
PrevPrev NextNext
You are not authorized to post a reply.
Author Messages Not Resolved
hidden
Posts:64
Avatar

--
21 giu 2011 11:25  
Salve a tutti, perdonatemi se l'oggetto del post non rispecchia in toto la richiesta di aiuto ma non sapevo come esprimerla.
Vi illustro il mio problema.
Ho un'applicazione silverlight che non è collegata con nessun database.

Al suo interno ho una classe Dipendente che espone tre proprietà Matricola Nome Cognome e una childrenwindow dove aggiungo o modifico i dati in una mia collection di Dipendenti.

Ora dato che sto cercando di imparare il binding vorrei bindare i controlli alla mia collection, in più ricordo una volta di aver visto da qualche parte la possibilità di impostare il binding al contenitore (es nel grid o stack panel) e poi specificare solo la proprietà a cui deve fare riferimento il controllo textbox, in esso contenuto.
es:
<grid x:Name="LayoutRoot", >
<texbbox ........ Text="{binding Matric}" />

</grid>

da codice nel costruttore

LayoutRoot.datacontex= MiaCollectionDiDipendenti

Però ho notato che così non funziona

Come mai? Dove sbaglio?

Mi potreste dare una mano? Sto googlando ma per quanto riguarda il binding trovo tutto quello che ha a che fare con la gestione dati.

Vi ringrazio.
Roberto Sarati
Veteran Member
Veteran Member
Posts:277
Avatar

--
21 giu 2011 12:09  
Ciao.

Quello che dici è tutto corretto, tuttavia il problema è il seguente:
1) tu imposti una collezione a LayoutRoot.DataContext
2) la TextBlock contenuta in LayoutRoot (poichè non specifichi altro DataContext) eredita la collezione del padre
3) gli dici di andare a leggere la proprietà Matricola dell'oggetto messo nel DataContext. In questo caso la collezione.

In pratica gli stai dicendo di andare a leggere la proprietà Matricola della Collezione, ma la collezione non ha una proprietà Matricola. Puoi metterci Count per esempio (se una lista).
Quindi devi mostrare una lista di oggetti in questo modo:
<grid x:Name="LayoutRoot"> <!-- qui imposti il datacontext come facevi da codice -->
<ListView ItemSource="{Binding}"> <!-- con questa sintassi stai dicendo di prendere il DataContext e metterlo nella proprietà ItemSource -->
<ListView.ItemTemplate>
<!-- questo è il template del singolo oggetto della listview. Il DataContext di questo elemento è impostato al singolo oggetto presente nella collection -->
<DataTemplate>
<texbbox ........ Text="{binding Matricola}" /> <!-- qui imposti il binding all'oggetto (Dipendente.Matricola) -->
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</grid>
hidden
Posts:64
Avatar

--
21 giu 2011 12:14  
Ok hai ragione tu ho sbagliato l'approccio.
In realtà quello che voglio ottenere è un effetto master details
Cioè quando selezione un elemento dalla combobox che funziona correttamente voglio che nelle textbox compaia il dettaglio.
Come faccio ad ottenere questo effetto?

Grazie
hidden
Posts:64
Avatar

--
21 giu 2011 12:35  
In più sto provando con Listview ma in Silverlight 4 mi sembra di capire che non c'è, o sto facendo un altro sbaglio?

Grazie

Francesco Valentino
hidden
Posts:64
Avatar

--
21 giu 2011 12:37  
Ok ho risolto effettuando il binding alla combobox con il seguente codice

Text="{Binding Path=SelectedItem.Lettera, Mode=TwoWay, ElementName=cmb_ElencoNominativi}"

Grazie
Francesco Valentino
Roberto Sarati
Veteran Member
Veteran Member
Posts:277
Avatar

--
21 giu 2011 02:31  
Ops, scusa, non mi ero accorto che ti stavi riferendo a Silverlight
In silverlight ci sono ListBox o GridView che fanno la stessa cosa.

Per il masterdetail direi che te la sei cavata alla grande.
Di solito io implementerei un ViewModel con la proprietà "DipendenteSelezionato" in binding con SelectedItem della combo. E poi passare questo al dettaglio. Comunque anche così on the fly funziona.

Ciao.
You are not authorized to post a reply.

Active Forums 4.2
  
hd porn
 
© 2009-2011 WPF Tips&Tricks Team - Visual Basic Tips&Tricks Network
 
porno izleporno izle