Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Visual.TransformToAncestor (Visual)

 

Publicado: octubre de 2016

Devuelve una transformación que puede usarse para transformar las coordenadas de la Visual especificado Visual antecesor del objeto visual.

Espacio de nombres:   System.Windows.Media
Ensamblado:  PresentationCore (en PresentationCore.dll)

public GeneralTransform TransformToAncestor(
	Visual ancestor
)

Parámetros

ancestor
Type: System.Windows.Media.Visual

El Visual para que se transforman las coordenadas.

Valor devuelto

Type: System.Windows.Media.GeneralTransform

Valor de tipo GeneralTransform.

Exception Condition
ArgumentNullException

El valor de ancestor es null.

ArgumentException

ancestor no es un antecesor del objeto visual.

InvalidOperationException

Los objetos visuales no están relacionados.

Como alternativa, puede utilizar el VisualTreeHelper.GetOffset método para recuperar el desplazamiento de un objeto visual en relación con su elemento primario. Los valores de desplazamiento se encuentran en el valor devuelto Vector valor.

// 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);

El ejemplo de marcado siguiente se muestra un TextBlock que está anidada dentro de dos StackPanel objetos.

<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>

En el ejemplo de código siguiente se muestra cómo utilizar el TransformToAncestor método para recuperar el desplazamiento de la TextBlock con respecto a la que contiene Window. Los valores de desplazamiento se encuentran en el valor devuelto GeneralTransform.

// 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));

El desplazamiento tiene en cuenta el Margin valores para todos los objetos dentro de la que contiene Window. En este caso, X es 28, y Y es 28.

.NET Framework
Disponible desde 3.0
Volver al principio
Mostrar: