FrameworkElement.MeasureOverride(Size) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Wanneer deze wordt overschreven in een afgeleide klasse, meet u de grootte in de indeling die is vereist voor onderliggende elementen en bepaalt u een grootte voor de FrameworkElement-afgeleide klasse.
protected:
virtual System::Windows::Size MeasureOverride(System::Windows::Size availableSize);
protected virtual System.Windows.Size MeasureOverride(System.Windows.Size availableSize);
abstract member MeasureOverride : System.Windows.Size -> System.Windows.Size
override this.MeasureOverride : System.Windows.Size -> System.Windows.Size
Protected Overridable Function MeasureOverride (availableSize As Size) As Size
Parameters
- availableSize
- Size
De beschikbare grootte die dit element kan geven aan onderliggende elementen. Oneindigheid kan worden opgegeven als een waarde om aan te geven dat het element de grootte heeft van de inhoud die beschikbaar is.
Retouren
De grootte die dit element nodig heeft tijdens de indeling, op basis van de berekeningen van onderliggende elementgrootten.
Opmerkingen
Overschrijf MeasureOverride om aangepaste indelingsgroottegedrag voor uw element te implementeren terwijl het deelneemt aan het indelingssysteem van Windows Presentation Foundation (WPF). Uw implementatie moet het volgende doen:
De specifieke verzameling onderliggende elementen die deel uitmaken van de indeling herhalen, roept Measure elk onderliggend element aan.
Onmiddellijk op het onderliggende element ( DesiredSize dit is ingesteld als een eigenschap nadat Measure deze is aangeroepen).
Bereken de netto gewenste grootte van het bovenliggende element op basis van de meting van de onderliggende elementen.
De retourwaarde van MeasureOverride het element moet de eigen gewenste grootte van het element zijn, die vervolgens de metinginvoer wordt voor het bovenliggende element van het huidige element. Ditzelfde proces wordt voortgezet door het indelingssysteem totdat het hoofdelement van de pagina is bereikt.
Tijdens dit proces kunnen onderliggende elementen een grotere DesiredSize grootte retourneren dan de eerste availableSize om aan te geven dat het onderliggende element meer ruimte wil. Dit kan worden verwerkt in uw eigen implementatie door een schuifbaar gebied te introduceren, door het formaat van het bovenliggende besturingselement te wijzigen, door een bepaalde manier van gestapelde volgorde vast te stellen of een aantal oplossingen voor het meten of rangschikken van inhoud.
Important
Elementen moeten tijdens dit proces elk onderliggend element aanroepen Measure , anders worden de onderliggende elementen niet correct aangepast of gerangschikt.
Notities voor overnemers
In de volgende niet-compilatiecode ziet u dit implementatiepatroon.
VisualChildren vertegenwoordigt een inventariserbare verzamelingseigenschap van onderliggende elementen die door uw eigen element moeten worden gedefinieerd. De eigenschap kan elke naam krijgen.
VisualChildren is een tijdelijke aanduiding voor het doel van dit voorbeeld, is VisualChildren geen API zoals geleverd door WPF of een deel van een naamgevingspatroon.
protected override Size MeasureOverride(Size availableSize)
{
Size desiredSize = new Size();
foreach (UIElement child in VisualChildren)
{
child.Measure(availableSize);
// do something with child.DesiredSize, either sum them directly or apply whatever logic your element has for reinterpreting the child sizes
// if greater than availableSize, must decide what to do and which size to return
}
// desiredSize = ... computed sum of children's DesiredSize ...;
// IMPORTANT: do not allow PositiveInfinity to be returned, that will raise an exception in the caller!
// PositiveInfinity might be an availableSize input; this means that the parent does not care about sizing
return desiredSize;
}
Protected Overrides Function MeasureOverride(ByVal availableSize As Size) As Size
Dim desiredSize As New Size()
For Each child As UIElement In VisualChildren
child.Measure(availableSize)
' do something with child.DesiredSize, either sum them directly or apply whatever logic your element has for reinterpreting the child sizes
' if greater than availableSize, must decide what to do and which size to return
Next child
' desiredSize = ... computed sum of children's DesiredSize ...
' IMPORTANT: do not allow PositiveInfinity to be returned, that will raise an exception in the caller!
' PositiveInfinity might be an availableSize input - this means that the parent does not care about sizing
Return desiredSize
End Function