2010-03-30 16 views
6

Ho provato Google e non ho provato Bing. Qualcuno qui ha un'idea su come impedire che elementi parziali vengano visualizzati in una listbox in WPF? Nel caso in cui ciò non abbia senso, ecco un esempio: Listbox è alto 200 pixel - ogni elemento è alto 35 pixel. Ciò significa che posso mostrare 5,7 oggetti. 7/10 di un articolo non è desiderabile. Mi piacerebbe limitarlo a mostrare solo 5 elementi. L'utente potrebbe quindi scorrere per vedere gli elementi aggiuntivi.Non mostrare elementi parziali in una casella di riepilogo WPF

Dovrei A) provare a ridimensionare in modo dinamico la listbox o ScrollViewer ViewPort in modo che si adatti perfettamente? Oppure B) implementare un pannello personalizzato che non organizzerebbe un bambino la cui altezza desiderata è maggiore dello spazio verticale rimanente?

Ogni pensiero sarebbe molto apprezzato. Ultima nota: se qualcuno è a conoscenza di un controllo di terze parti (listbox o griglia), questo sarebbe interessante anche a me.

+0

hmmm, beh, in WinForms il ListBox ha un'impostazione: IntegralHeight AFAIK, WBox ListBox no. –

risposta

1

Basta ridimensionarlo nel designer fino a quando non si ottiene una riga parziale. Implementare un pannello personalizzato è troppo lavoro per qualcosa di simile.

Si potrebbe anche provare un ListView invece di un ListBox. Potrei star dimenticando questo, ma penso che uno ListView non mostri i partial, o forse abbia un'opzione per non mostrare le righe parziali.

+0

Guarderò il listview. Non possiamo pre-dimensionare la listbox. La sua altezza aumenterà quando/se l'utente ridimensiona la finestra. –

+2

Buongiorno David per la gestione delle ridimensionamenti in modo corretto! Non farlo è un grosso problema per me. –

+0

In realtà, la mia vera risposta avrebbe dovuto essere: "non disturbarti". Quello che stai descrivendo è il normale comportamento del listbox; Dubito che perderesti qualche cliente a causa di ciò. – MusiGenesis

1

Ho pensato a questo oggi poiché il mio progetto ha combattuto questo problema. I miei pensieri sono legati al mio progetto ma dovrebbero essere applicabili. Sto presupponendo un MVVM ViewModel ma funzionerebbe senza di esso.

Associare una proprietà all'altezza del contenitore in cui si trova il componente ListBox, quindi associare l'altezza di ListBox a quella che utilizza ValueConverter per far sì che ListBox si espanda o si compatta in fasi in base all'altezza di un singolo elemento. Questo potrebbe sembrare un po 'strano quando si ridimensiona, ma con una breve animazione potrebbe sembrare bello.

+0

Puoi dare un po 'più di dettagli a questa risposta? –

+0

Cercherò di presentare un semplice esempio questo fine settimana –

1

è possibile ottenere questo risultato trovando le altezze effettive del contenuto della casella di riepilogo in dispather e regolare l'altezza della casella di riepilogo, ma, farà aumentare o ridurre le dimensioni della casella di riepilogo dipende dall'implementazione.

1

Il mio voto è un pannello personalizzato per ogni articolo. Questo pannello non viene visualizzato se non può visualizzare completamente se stesso. L'elenco può essere ridimensionato in base alle esigenze perché il suo unico lavoro è quello di essere un contenitore ridimensionabile che fornisce un'area per i pannelli. I pannelli possono crescere e restringersi se necessario.

Problemi correlati