Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ezek a példák bemutatják, hogyan kérhető le egy vizuális objektum eltolódási értéke, amely a szülőhöz, vagy bármely elődhöz vagy utódhoz képest van.
példa
Az alábbi jelölési példa egy olyan TextBlock-t példáz, amely a Margin értékével 4-re van definiálva.
<TextBlock Name="myTextBlock" Margin="4" Text="Hello, world" />
Az alábbi példakód bemutatja, hogyan használható a GetOffset metódus a TextBlockeltolásának lekérésére. Az eltolási értékek a visszaadott Vector értéken belül találhatók.
// Return the offset vector for the TextBlock object.
Vector vector = VisualTreeHelper.GetOffset(myTextBlock);
// Convert the vector to a point value.
Point currentPoint = new Point(vector.X, vector.Y);
' Return the offset vector for the TextBlock object.
Dim vector As Vector = VisualTreeHelper.GetOffset(myTextBlock)
' Convert the vector to a point value.
Dim currentPoint As New Point(vector.X, vector.Y)
Az eltolás figyelembe veszi a Margin értéket. Ebben az esetben X 4, Y pedig 4.
A visszaadott eltolás értéke a Visualszülőeleméhez viszonyítva van megadva. Ha olyan eltolásértéket szeretne visszaadni, amely nem a Visualszülőjéhez viszonyított, használja a TransformToAncestor metódust.
Az eltolás meghatározása egy elődhöz viszonyítva
Az alábbi jelölőnyelv-példa egy TextBlock-t mutat be, amely két StackPanel objektumon belül van beágyazva.
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<StackPanel Margin="16">
<StackPanel Margin="8">
<TextBlock Name="myTextBlock" Margin="4" Text="Hello, world" />
</StackPanel>
</StackPanel>
</Window>
Az alábbi ábrán a korrektúra eredményei láthatók.
TextBlock beágyazva két StackPanelbe
Az alábbi példakód bemutatja, hogyan használható a TransformToAncestor metódus a TextBlock eltolásának lekérésére az azt tartalmazó Windowképest. Az eltolási értékek a visszaadott GeneralTransform értéken belül találhatók.
// Return the general transform for the specified visual object.
GeneralTransform generalTransform1 = myTextBlock.TransformToAncestor(this);
// Retrieve the point value relative to the parent.
Point currentPoint = generalTransform1.Transform(new Point(0, 0));
' Return the general transform for the specified visual object.
Dim generalTransform1 As GeneralTransform = myTextBlock.TransformToAncestor(Me)
' Retrieve the point value relative to the parent.
Dim currentPoint As Point = generalTransform1.Transform(New Point(0, 0))
Az eltolás figyelembe veszi a Margin értékeket minden objektumhoz a tartalmazó Window-ben. Ebben az esetben X 28 (16 + 8 + 4), és Y 28.
A visszaadott eltolás értéke a Visualelem őséhez viszonyítva van. Ha egy Visualleszármazottához viszonyított eltolásértéket szeretne visszaadni, használja a TransformToDescendant metódust.
Az eltolás lekérése egy adott leszármazotthoz képest
Az alábbi jelölő példa egy TextBlock-t mutat be, amely egy StackPanel objektumban található.
<StackPanel Name="myStackPanel" Margin="8">
<TextBlock Name="myTextBlock" Margin="4" Text="Hello, world" />
</StackPanel>
Az alábbi példakód bemutatja, hogyan használható a TransformToDescendant metódus a StackPanel elfordításának lekérésére a TextBlockgyermekéhez képest. Az eltolási értékek a visszaadott GeneralTransform értéken belül találhatók.
// Return the general transform for the specified visual object.
GeneralTransform generalTransform1 = myStackPanel.TransformToDescendant(myTextBlock);
// Retrieve the point value relative to the child.
Point currentPoint = generalTransform1.Transform(new Point(0, 0));
' Return the general transform for the specified visual object.
Dim generalTransform1 As GeneralTransform = myStackPanel.TransformToDescendant(myTextBlock)
' Retrieve the point value relative to the child.
Dim currentPoint As Point = generalTransform1.Transform(New Point(0, 0))
Az eltolás figyelembe veszi az összes objektum Margin értékeit. Ebben az esetben a X -4, a Y pedig -4. Az eltolási értékek negatív értékek, mivel a szülőobjektum negatívan el van tolva a gyermekobjektumhoz képest.
Lásd még
.NET Desktop feedback