13 messaggi dal 04 gennaio 2007
Ciao a tutti.
Cerco di esporre il mio problema
Window (x:Name Window)
1 |_DockPanel
2 |_Grid
3 |_ScollViewer
4 |_StackPanel (x:Name functionStackPanel)
5 |_Expander1
5 |_Expander2
5 |_Expander3
6 |_Header
6 |_TextBlock
7 |_InlineUIContainer
8 |_ListView
5 |_Expander4
5 |_Expander5
5 |_Expander6

Ho aggiunto in testata un numero che rappresenta il livello dei controlli visto che in anteprima tutto mi si collassa (e non sono in grado di abilitare HTML)

Ho una finestra che contiene diversi Expander allineati alcuni di
questi (3-4-5) contengono una listView con diversi elementi.
Se per esempio apro l'expander 3 e la lista continene molti elementi mi capita che questi escano dallo schermo.
Volevo limitare la MaxHeight di ogni listview degli expander in modo tale da avere sempre il massimo di elementi visibili senza uscire dallo schermo

L'altezza della finestra(Windows) meno quella dello stack panel (functionStackPanel) mi dice quanto spazio mi è rimasto fino alla fine della finestra.

Allora avevo pensato di fare un binding al MaxHeight delle ListView con un converter che mi calcolava questo valore, ma mi viene applicato prima che l'expander si sia aperto e quindi con un valoredell stackpanel errato.

Ovviamente c'è un controllo che se il valore calcolato risulta troppo piccolo viene assegnata un'altezza minima.

Il problema è che verrebbe fatto per ogni Expander anche se non espanso.

qualche suggerimento per implementare questa funzionalità?
Modificato da bottaxxgp il 22 gennaio 2009 20.02 -
Io farei una specializzazione dello StackPanel. Fai una tua classe che eredita e sovrascrivi MeasureOverride e ArrangeOverride. Lì puoi chiedere all'expander quanto vuole (il MaxHeight influenza questa valore ma tu non usarlo). Nell'arrange poi puoi forzare quando è alto.
Se hai dubbi su come fare, guarda con reflector il codice originale dello StackPanel. Guarda anche una breve spiegazione qua
http://blogs.aspitalia.com/ricciolo/post1654/WallPanel-WPF-Disposizione-Muro.aspx

Ciao

Il mio blog
Homepage
13 messaggi dal 04 gennaio 2007
Sono un novellino e non sono molto esperto. Fino ad ora il mio approccio WPF si è limitato a semplici binding sui controlli, ma ora non penso bastino più.

Ho provato (prima del tuo consiglio) a lavorare sul MaxHeight delle liste ma il risultato non è il massimo.

LA mia finestra è un pannello a scorrimento laterale.

____________
|
|
| A
|
____________
|
|
| B
|
|
____________
La parte A ospita tutti i miei controlli ed expander
La parte B invece è la parte "vuota" del mio pannello
Vorrei che liste al massimo si allargassero dello spazio B

Questo sia quando apro i vari expander ed anche quando cambio risoluzione dello schermo.

Nella prova cheho fatto io ho fatto un converter che calcola il maxheight come differenza tra il contenitore (a+B)StackPanel e scrollviewer per ogni listview interessata ma non è il max.

Le liste non hanno limite all'inizio MaxHeight = +infinito quindi quando le imposto cambia l'altezza e quindi mi riparte ancora il converter e quindi mi trovo a ciclare all'infinito....

Riesci a fornirmi un indizio in più per un più che principiante?

Grazie e ciao

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.