2013-03-05 15 views
5

E 'in qualche modo possibile limitare Window.SizeToContent per espandere solo la dimensione?Limitare Window.SizeToContent per espandere solo

mi hanno una finestra generale che viene dinamicamente riempita di contenuti in un TabControl. Dato che all'inizio non è noto quanto grande sia ciascun TabItem, non posso precalcolare la dimensione richiesta (mi interessa solo l'altezza) per visualizzarlo tutto senza scorrere.

Abilitazione SizeToContent regola automaticamente la dimensione alla dimensione desiderata quando la scheda viene modificata. Mentre va bene che si espande solo quando la vista corrente richiede più spazio, non mi piace che la finestra si ridurrà anche quando è richiesto meno spazio. È possibile limitare il comportamento di SizeToContent per consentire l'espansione della dimensione della finestra? Oppure il comportamento può essere emulato in un modo diverso, pur continuando a produrre risultati corretti tenendo conto dei telai delle finestre e degli altri componenti accanto al controllo Struttura a schede?

Ho provato ad agganciare in eventi di finestre diversi per scoprire dove vanno le nuove informazioni sulla dimensione quando si cambia la scheda, ma l'unica vera utile sulla finestra, OnChildDesiredSizeChanged, non produceva risultati deterministici (per alcune schede veniva chiamato, per altri non lo era). Hai qualche altra idea?

+1

Come definire semplicemente una dimensione minima? –

+1

@KevinDiTraglia Come ho detto, la finestra è riempita dinamicamente di contenuti. E in realtà voglio consentire all'utente di ridimensionarlo e renderlo più piccolo. Voglio solo che la dimensione predefinita sia "perfetta" per il contenuto visualizzato. – poke

risposta

3

È possibile provare a utilizzare FrameworkElement.MinHeight e FrameworkElement.MinWidth per impostare l'altezza/larghezza minima dopo che è stato caricato il Window.

public void WindowLoaded() 
{ 
    this.MinHeight = this.ActualHeight; 
    this.MinWidth = this.ActualWidth; 
} 
3

Ho provato l'approccio di Bob. La sua risposta è l'approccio giusto.

Nel mio caso l'evento WindowLoaded licenziato ai primi. È stato attivato prima del rendering del contenuto.

Perciò ho usato l'evento "ContentRendered" ed ora la mia finestra solito strizzacervelli se la dimensione dei contenuti è ridotta. Se il tuo contenuto può aumentare le sue dimensioni dopo che le finestre sono state mostrate per la prima volta, puoi utilizzare l'evento "SizeChanged".

Problemi correlati