DotNetCampania
Il primo portale campano dedicato allo sviluppo software con tecnologie Microsoft

WPF e databinding di oggetti child

rated by 0 users
This post has 6 Replies | 2 Followers

Top 25 Partecipanti
Post 15
Punteggio 315
manu71 Posted: 13 lug 2009 17:05

 

salve,

sono alle prese con il databinding di WPF e in particolare ho la necessità di effettuare il binding su una lista di oggetti Customer, che hanno tra le altre una proprietà di tipo Address che a  sua volta espone una serie di proprietà tra cui City.

Quindi:

Customer

Id

Name

Address

Street

City

Email

...

 

nello XAML ho definito la listbox in questo modo:

        <ListBox ItemsSource="{Binding Customers}">

            <ListBox.ItemTemplate>

                <DataTemplate>

                    <StackPanel Orientation="Horizontal">

                        <TextBlock Text="Id:" />

                        <TextBlock Text="{Binding Id}" />

                        <TextBlock Text="Name:" />

                        <TextBlock Text="{Binding Name}" />

                        <TextBlock Text="City:" />

                        <TextBlock Text="{Binding Address, Path=Address.City}" />

                    </StackPanel>

                </DataTemplate>

            </ListBox.ItemTemplate>

        </ListBox>

 

Le proprietà Id e Name vengono correttamente visualizzate nella lista al contrario della proprietà City che nonostante sia correttamente valorizzata nei vari oggetti Customer non viene mostrata nella listbox.

Inutile dire che ho cercato in rete e ho provato diverse combinazioni nella definizione del binding senza successo Sad

Top 10 Partecipanti
Maschio
Post 383
Punteggio 5.595

Hai provato molto semplicemente:

<TextBlock Text="{Binding Path=Address.City}" />

?

  • | Punteggio Post: 20
Top 25 Partecipanti
Post 15
Punteggio 315

si è una delle prove che ho fatto... ma purtroppo non va bene.

Nel post iniziale ho omesso di dire che la collection Customers è esposta dal ViewModel che è associato al DataContext della View... ma credo che non sia un'informazione fondamentale

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 383
Punteggio 5.595

Puoi mandarmi o postare la classe Customer e Address nella loro interezza? A volte sono schiocchezze che un occhio esterno vede con più facilità...

  • | Punteggio Post: 5
Top 10 Partecipanti
Maschio
Post 383
Punteggio 5.595

Intanto controlla la console perchè wpf non da errrori di binding però li scrive sulla console!

  • | Punteggio Post: 20
Top 25 Partecipanti
Post 15
Punteggio 315

Infatti... Sad

ho controllato l'output e ho visto che era un banalissimo errore di digitazione che mi ha fatto perdere un bel po' di tempo.

Scusatemi

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 383
Punteggio 5.595

Figurati, mi dai la possibilità proprio di dirlo: il principale e unico vero problema del binding di wpf in fase di progettazione è proprio il dover digitare le proprietà senza avere la possibilità di alcun controllo da parte del compilatore. A noi in azienda è successo così spesso che ormai non mi alzo proprio quando uno dei tirocinanti chiede come mai non funziona il binding, dico semplicemente:

1. Controlla che il nome della proprietà "esposta" e quello che hai digitato nel Path coincida

2. Se stai settando un valore selezionato, tipo il SelectedItem, controlla che il tipo esposto coincida con il tipo dell'elenco.

Fino ad oggi ho risparmiato di alzarmi almeno un decina di volte al giorno...

Per qualsiasi costa, non ti fare problemi, posta pure!

  • | Punteggio Post: 5
Pagina 1 di 1 (7 elementi) | RSS

Associazione Culturale DotNetCampania - C.F.: 95127870632

Powered by Community Server (Commercial Edition), by Telligent Systems