Informazioni
L'argomento richiesto è visualizzato di seguito, ma non è incluso in questa libreria.

Metodo UIElement.Measure

Aggiornamento: novembre 2007

Aggiorna DesiredSize di UIElement. Gli elementi padre chiamano questo metodo dall'implementazione di MeasureCore per produrre un aggiornamento ricorsivo del layout. La chiamata a questo metodo costituisce il primo passaggio (passaggio di misurazione) di un aggiornamento del layout.

Spazio dei nomi:  System.Windows
Assembly:  PresentationCore (in PresentationCore.dll)

public void Measure(
	Size availableSize
)
public void Measure(
	Size availableSize
)
public function Measure(
	availableSize : Size
)
Non è possibile utilizzare metodi in XAML.

Parametri

availableSize
Tipo: System.Windows.Size

Lo spazio disponibile che un elemento padre può allocare per un elemento figlio. Un elemento figlio può richiedere uno spazio maggiore di quello disponibile. È possibile adattare la dimensione fornita se lo scorrimento è possibile nel modello di contenuto per l'elemento corrente.

Il calcolo del posizionamento del layout in Windows Presentation Foundation (WPF) è costituito da una chiamata a Measure e da una chiamata a Arrange. Durante la chiamata a Measure, un elemento determina i requisiti di dimensione utilizzando un input availableSize. Durante la chiamata a Arrange, viene finalizzata la dimensione dell'elemento.

availableSize può essere qualsiasi numero da zero a infinito. Gli elementi coinvolti nel layout devono restituire il valore Size minimo richiesto per il parametro availableSize specificato.

Quando viene creata un'istanza del layout per la prima volta, viene sempre ricevuta una chiamata a Measure prima di una chiamata a Arrange. Dopo il primo passaggio di layout, è tuttavia possibile ricevere una chiamata a Arrange senza una chiamata a Measure. Questa condizione può verificarsi quando viene modificata una proprietà (ad esempio alignment) che ha effetto solo su Arrange o quando l'elemento padre riceve una chiamata a Arrange senza una chiamata a Measure. Una chiamata a Measure invaliderà automaticamente una chiamata a Arrange.

Gli aggiornamenti del layout vengono eseguiti in modo asincrono, in modo che il thread principale non sia in attesa di ogni eventuale modifica del layout. È possibile che l'esecuzione di una query su un elemento tramite la verifica code-behind dei valori della proprietà non rifletta immediatamente le modifiche alle proprietà che interagiscono con le caratteristiche di ridimensionamento o layout (ad esempio, la proprietà Width).

Nota:

Gli aggiornamenti del layout possono essere forzati mediante il metodo UpdateLayout. Tuttavia, non è generalmente necessario chiamare questo metodo che può comportare una riduzione delle prestazioni.

Il sistema di layout mantiene due code separate di layout non validi, una per Measure e l'altra per Arrange. La coda del layout viene disposta in base all'ordine degli elementi nella struttura ad albero visuale dell'elemento che esegue il layout. Gli elementi con il livello più alto nella struttura ad albero si trovano all'inizio della coda in modo da evitare layout ridondanti causati da modifiche ripetute negli elementi padre. Le voci duplicate vengono automaticamente rimosse dalla coda e gli elementi vengono automaticamente rimossi dalla coda se sono già stati convalidati dal punto di vista del layout.

Durante l'aggiornamento del layout, viene svuotata prima la coda Measure, seguita dalla coda Arrange. Un elemento della coda Arrange non verrà mai disposto se è presente un elemento nella coda Measure.

In questo esempio viene illustrato come eseguire l'override del comportamento di layout predefinito dell'elemento Panel e creare elementi di layout personalizzati derivati da Panel.

Viene definito un semplice elemento Panel personalizzato denominato PlotPanel che posiziona gli elementi figlio in base a due coordinate x e y specificate a livello di codice (hard-coded). In questo caso x e y sono entrambi impostate su 50; pertanto, tutti gli elementi figlio sono situati in tale posizione sugli assi x e y.

Per implementare i comportamenti personalizzati di Panel, vengono utilizzati i metodi MeasureOverride e ArrangeOverride. Ogni metodo restituisce i dati Size che sono necessari per il posizionamento e il rendering degli elementi figlio.

public class PlotPanel : Panel
{
    // Default public constructor
    public PlotPanel()
        : base()
    {
    }

    // Override the default Measure method of Panel
    protected override Size MeasureOverride(Size availableSize)
    {
        Size panelDesiredSize = new Size();

        // In our example, we just have one child. 
        // Report that our panel requires just the size of its only child.
        foreach (UIElement child in InternalChildren)
        {
            child.Measure(availableSize);
            panelDesiredSize = child.DesiredSize;
        }

        return panelDesiredSize ;
    }
    protected override Size ArrangeOverride(Size finalSize)
    {
        foreach (UIElement child in InternalChildren)
        {
            double x = 50;
            double y = 50;

            child.Arrange(new Rect(new Point(x, y), child.DesiredSize));
        }
        return finalSize; // Returns the final Arranged size
    }
}


Per l'esempio completo, vedere Esempio di creazione di un elemento Panel semplice personalizzato.

Windows Vista

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0

Aggiunte alla community

Mostra:
© 2014 Microsoft