WPF - Adattare i contenuti delle Window alla dimensione e risoluzione dello schermo
Quote from dodiro on 10/09/2020, 11:31Recentemente ho installato delle applicazioni WPF su un computer che lavora con uno schermo 4K (risoluzione 3840x2160) e ho dovuto intervenire sui file xaml dell'applicazione perchè l'interfaccia grafica non occupava l'intera finestra come previsto del software. Premetto che le applicazioni hanno tutte le Window con la proprietà WindowState = Maximized e che i vari elementi contenitori hanno sempre le proprietà HorizontalAlignment e VerticalAlignment con l'opzione Stretch. Evidentemente tutto ciò non è sufficiente,forse per l'incrocio "mortale" con le opzioni ColumnDefinition e RowDefinition. Detto ciò, vorrei sapere se esista una tecnica per fare in modo che l'interfaccia grafica delle Window di WPF si presenti sempre con le medesime caratteristiche indipendentemente dal formato e risoluzione dello schermo. Grazie per eventuali consigli al riguardo.
Recentemente ho installato delle applicazioni WPF su un computer che lavora con uno schermo 4K (risoluzione 3840x2160) e ho dovuto intervenire sui file xaml dell'applicazione perchè l'interfaccia grafica non occupava l'intera finestra come previsto del software. Premetto che le applicazioni hanno tutte le Window con la proprietà WindowState = Maximized e che i vari elementi contenitori hanno sempre le proprietà HorizontalAlignment e VerticalAlignment con l'opzione Stretch. Evidentemente tutto ciò non è sufficiente,forse per l'incrocio "mortale" con le opzioni ColumnDefinition e RowDefinition. Detto ciò, vorrei sapere se esista una tecnica per fare in modo che l'interfaccia grafica delle Window di WPF si presenti sempre con le medesime caratteristiche indipendentemente dal formato e risoluzione dello schermo. Grazie per eventuali consigli al riguardo.
Quote from Miky on 11/09/2020, 15:46Ciao
Un po' di codice aiuterebbe a capire meglio 🙂
Io lavoro su due schermi con risoluzioni differenti e sebbene non siano 4k posso comunque tentare di aiutarti.
Se parli di ColumnDefinition e RowDefinition ti riferisci ad una grid che fa da contenitore padre giusto?
La grid ha width impostata?
Le colonne hanno una width impostata? Oppure sono in "Auto" e "*"?
Se hai impostato "Auto" il controllo figlio ha una width impostata?
Ciao
Un po' di codice aiuterebbe a capire meglio 🙂
Io lavoro su due schermi con risoluzioni differenti e sebbene non siano 4k posso comunque tentare di aiutarti.
Se parli di ColumnDefinition e RowDefinition ti riferisci ad una grid che fa da contenitore padre giusto?
La grid ha width impostata?
Le colonne hanno una width impostata? Oppure sono in "Auto" e "*"?
Se hai impostato "Auto" il controllo figlio ha una width impostata?
Quote from sabrina_c on 14/09/2020, 16:00Certamente, come indicato da Miky, sarebbe bello che ci postassi un esempio dello xaml che non fa quello che ti aspetti.
Per fare in modo che una grid si ridimensioni in base al contenuto, le Column e Row definition devono essere proporzionali, quindi è indispensabile usare le misure con (*) e l'eventuale "Auto" per le celle in cui vuoi che si adattino al contenuto. Puoi anche giocare con i Margini e il Padding per aiutarti a posizionare al meglio i contenuti.
La finestra non deve avere Width e Height ma se ti è necessario usa eventualmente la "MinWidth e MinHeight".
Se hai qualche particolare difficoltà mostraci il tuo XAML e vediamo come aiutarti a creare le future finestre in modo che siano trasparenti alla risoluzione.
Ti ricordo che le dimensioni "Fisiche" in WPF sono espresse in 1/96 di pollice e che le dimensioni dei controlli dipenderanno non solo dalla risoluzione dello schermo ma anche dalla percentuale di modifica sulla risoluzione effettiva che viene impostata sulle property dello schermo da Windows.
saluti
Certamente, come indicato da Miky, sarebbe bello che ci postassi un esempio dello xaml che non fa quello che ti aspetti.
Per fare in modo che una grid si ridimensioni in base al contenuto, le Column e Row definition devono essere proporzionali, quindi è indispensabile usare le misure con (*) e l'eventuale "Auto" per le celle in cui vuoi che si adattino al contenuto. Puoi anche giocare con i Margini e il Padding per aiutarti a posizionare al meglio i contenuti.
La finestra non deve avere Width e Height ma se ti è necessario usa eventualmente la "MinWidth e MinHeight".
Se hai qualche particolare difficoltà mostraci il tuo XAML e vediamo come aiutarti a creare le future finestre in modo che siano trasparenti alla risoluzione.
Ti ricordo che le dimensioni "Fisiche" in WPF sono espresse in 1/96 di pollice e che le dimensioni dei controlli dipenderanno non solo dalla risoluzione dello schermo ma anche dalla percentuale di modifica sulla risoluzione effettiva che viene impostata sulle property dello schermo da Windows.
saluti