2011-10-26 21 views
8

Ho controllo immagine nella mia finestra. La dimensione di questo controllo Immagine è impostata su "Auto".Ottenere le dimensioni correnti dei controlli WPF

<Image x:Name="videoImg" Stretch="Fill" Height="Auto" Width="Auto" /> 

Quando provo ad accedere, restituisce 0. Come si può vedere la dimensione reale di questo controllo? Si ridimensiona con la finestra.

risposta

15

È possibile utilizzare .ActualHeight e .ActualWidth per ottenere la resa Height/Width di un controllo

+0

Ho provato fare questo. Ma risultato è lo stesso ( –

+0

@TimurMustafaev Come stai cercando di ottenere i valori? Attraverso codice dietro? Attraverso un legame? E quando stai cercando di ottenere i valori? Il controllo deve essere trasformato prima '' ActualHeigh' e ActualWidth' .. restituirà una dimensione – Rachel

+0

chiamo nuova forma dalla mia MainWindow in questa nuova forma ci sono controlli fiew e uno di loro è Immagine Dopo finestra caricato cerco di ottenere dimensioni come questo:. _imageControl.ActualWidth o _imageControl.ActualHeigh –

3

Il fatto è che le Width e Height proprietà consentono di esprimere la dimensione desiderata, mentre ciò che si vuole è la reso dimensione - a cui è possibile accedere (ma non impostare) utilizzando le proprietà ActualWidth e ActualHeight.

Va notato che questi non sono valori statici o, cioè, una volta impostata essi non sono necessariamente sarà lo stesso sempre dopo, come verrà nuovamente valutata misurando ogni sequenza di rendering ...

Perché [ActualHeight/ActualWidth] è un valore calcolato, si dovrebbe essere consapevoli del fatto che ci potrebbero essere più o incrementale modifiche ad esso come un risultato di varie operazioni da parte del sistema di layout segnalati. Il sistema di layout può calcolare lo spazio di misura richiesto per elementi figlio, i vincoli dall'elemento padre e così via.

Quindi, a seconda delle esigenze, è possibile prendere in considerazione la possibilità di rivalutare i dati in punti appropriati, ad esempio quando il controllo di contenimento viene ridimensionato.

1

Mentre alcuni controlli WPF riempiono tutti gli spazi disponibili quando sono strutturati e resi, gli altri no. In particolare, il controllo Immagine non è di un tipo che stabilisce le sue dimensioni da solo, vale a dire, nei casi in cui non si specificano le dimensioni del controllo in modo esplicito con attributi larghezza/altezza o simili.

Ma il controllo Grid riempie tutto lo spazio disponibile quando mancano attributi di definizione delle dimensioni. Il modello di pagina/finestra in Visual Studio ha un controllo Grid come figlio di un controllo root di pagina/finestra e quando l'utente inizia a mettere i controlli in una pagina in un editor grafico, i controlli aggiunti dall'utente diventano prima figli di questa griglia controllo.

Se è stato utilizzato il modello VS e il controllo Immagine è figlio del controllo Grid, denominare la griglia con un attributo x: Name ed è possibile utilizzare le proprietà ActidWidth/Height della griglia in base alle proprie esigenze in un code-behind, perché il controllo dell'immagine cresce fino alla dimensione Grid del padre, a condizione che non si specifichi la sua dimensione esplicitamente o in altro modo, ad esempio, l'impostazione del contenuto dell'immagine.

proposito, il comportamento dimensionamento dei controlli integrati possono essere cambiati. È possibile modificare un controllo e sovrascrivere le proprietà di dipendenza corrispondenti. Vedi, ad esempio, https://stackoverflow.com/a/6094993.

Problemi correlati