Determine the layout position of an element using the LayoutInformation
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="layout_information.Window1"
Title="LayoutInformation Sample">
<Border Margin="5" HorizontalAlignment="Left" VerticalAlignment="Top">
<Grid Name="myGrid" Height="150">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Name="txt1" Margin="5" Grid.Column="0" Grid.Row="0">Hello World!</TextBlock>
<Button Click="ShowLayoutSlot" Width="125" Height="25" Grid.Column="0" Grid.Row="1">Show Bounding Box</Button>
</Grid>
</Border>
</Window>
//File:Window.xaml.vb
Imports System
Imports System.Windows
Imports System.Windows.Media
Imports System.Windows.Shapes
Imports System.Windows.Controls
Imports System.Windows.Controls.Primitives
Namespace layout_information
Public Partial Class Window1
Inherits Window
Public Sub ShowLayoutSlot(sender As Object, e As System.Windows.RoutedEventArgs)
Dim myRectangleGeometry As New RectangleGeometry()
myRectangleGeometry.Rect = LayoutInformation.GetLayoutSlot(txt1)
Dim myGeometryDrawing As New GeometryDrawing()
Dim myPath As New Path()
myPath.Data = myRectangleGeometry
myPath.Stroke = Brushes.LightGoldenrodYellow
myPath.StrokeThickness = 1
Grid.SetColumn(myPath, 0)
Grid.SetRow(myPath, 0)
myGrid.Children.Add(myPath)
Console.WriteLine(LayoutInformation.GetLayoutSlot(txt1).ToString())
End Sub
End Class
End Namespace
Related examples in the same category