Linguaggio

UIElement.Measure(Size) Metodo

Definizione

Aggiorna desiredSize di un oggetto UIElement. In genere, gli oggetti che implementano il layout personalizzato per i relativi elementi figlio di layout chiamano questo metodo dalle proprie implementazioni measureOverride per formare un aggiornamento ricorsivo del layout.

public:
 virtual void Measure(Size availableSize) = Measure;
void Measure(Size const& availableSize);
public void Measure(Size availableSize);
function measure(availableSize)
Public Sub Measure (availableSize As Size)

Parametri

availableSize
Size

Spazio disponibile che un padre può allocare a un oggetto figlio. Un oggetto figlio può richiedere uno spazio maggiore di quello disponibile; le dimensioni specificate possono essere adattate se lo scorrimento o altro comportamento di ridimensionamento è possibile in quel particolare contenitore.

Esempio

Questo esempio implementa MeasureOverride per personalizzare la logica di passaggio "Measure" per un'implementazione del pannello personalizzata. Si noti in particolare questi aspetti del codice:

  • Scorre i bambini.
  • Per ogni figlio chiama Measure, usando un valore Size che ha senso in base al modo in cui la logica del pannello considera il numero di elementi figlio e il proprio limite di dimensioni note.
  • Restituisce le dimensioni (in questo caso, questo pannello semplice restituisce una dimensione fissa anziché una dimensione calcolata per l'accumulo delle misurazioni).
// First measure all children and return available size of panel
protected override Size MeasureOverride(Size availableSize)
{

    // Measure first 9 children giving them space up to 100x100, remaining children get 0x0 
    int i = 0;
    foreach (FrameworkElement child in Children)
    {
        if (i < 9)
        {
            child.Measure(new Size(100, 100));
        }
        else
        {
            child.Measure(new Size(0, 0));
        }

        i++;
    }


    // return the size available to the whole panel, which is 300x300
    return new Size(300, 300);
}

Commenti

La chiamata Measure raggiunge potenzialmente un'implementazione MeasureOverride di tale classe specifica. In caso contrario, la maggior parte delle classi FrameworkElement ha un comportamento di layout predefinito implicito per Measure.

availableSize può essere qualsiasi numero compreso tra zero e infinito. Gli elementi che partecipano al layout devono restituire le dimensioni minime necessarie per un determinato oggetto availableSize.

Il calcolo del posizionamento iniziale del layout in un'interfaccia utente XAML è costituito da una chiamata Di misura e da una chiamata Arrange , in tale ordine. Durante la chiamata a Measure, il sistema di layout determina i requisiti di dimensione di un elemento usando la misura availableSize . Durante la chiamata Arrange , il sistema di layout finalizza le dimensioni e la posizione del rettangolo di selezione di un elemento.

Quando un layout viene generato per la prima volta, ha sempre una chiamata Measure che viene eseguita prima di Arrange. Tuttavia, dopo il passaggio del primo layout, una chiamata Arrange può verificarsi senza una misura precedente. Ciò può verificarsi quando una proprietà che influisce solo su Arrange viene modificata (ad esempio l'allineamento) o quando l'elemento padre riceve un oggetto Arrange senza una misura.

Una chiamata di misura invaliderà automaticamente tutte le informazioni sulla disposizione . Gli aggiornamenti del layout vengono in genere eseguiti in modo asincrono (alla volta determinati dal sistema di layout). Un elemento potrebbe non riflettere immediatamente le modifiche apportate alle proprietà che influiscono sul ridimensionamento degli elementi, ad esempio Width.

Si applica a

Vedi anche