UIElement.Measure(Size) Metodo

Definizione

Aggiornamenti DesiredSize di un UIElement. In genere, gli oggetti che implementano il layout personalizzato per i propri figli di layout chiamano questo metodo dalle proprie implementazioni di MeasureOverride per formare un aggiornamento di layout ricorsivo.

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 rispetto a quello disponibile; le dimensioni fornite potrebbero essere ospitate se lo scorrimento o altri comportamenti di ridimensionamento sono possibili in tale contenitore specifico.

Esempio

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

  • Scorre i bambini.
  • Per ogni figlio, chiama Measure usando una dimensione che ha senso in base al modo in cui la logica del pannello tratta il numero di elementi figlio e il relativo limite di dimensioni note.
  • Restituisce le dimensioni (in questo caso, questo semplice pannello restituisce una dimensione fissa anziché una dimensione calcolata per accumulare le 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 da zero a infinito. Gli elementi che partecipano al layout devono restituire le dimensioni minime necessarie per un determinato oggetto availableSize.

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

Quando viene prodotto un layout, ha sempre una chiamata Di misura 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 viene modificata una proprietà che influisce solo su Arrange (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 Di disposizione . Gli aggiornamenti del layout si verificano in genere in modo asincrono (alla volta determinati dal sistema di layout). Un elemento potrebbe non riflettere immediatamente le modifiche alle proprietà che influiscono sul ridimensionamento degli elementi ,ad esempio Width.

Si applica a

Vedi anche