FrameworkElement.LayoutTransform 属性


获取或设置在执行布局时应该应用于此元素的图形转换方式。Gets or sets a graphics transformation that should apply to this element when layout is performed.

 property System::Windows::Media::Transform ^ LayoutTransform { System::Windows::Media::Transform ^ get(); void set(System::Windows::Media::Transform ^ value); };
public System.Windows.Media.Transform LayoutTransform { get; set; }
member this.LayoutTransform : System.Windows.Media.Transform with get, set
Public Property LayoutTransform As Transform


此元素应该使用的转换。The transform this element should use. 默认值为 IdentityThe default is Identity.


下面的示例演示如何将 LayoutTransform 应用到元素。The following example shows how to apply a LayoutTransform to an element. 该示例创建一个 Button 实例,并将其托管在父 Grid内。The example creates an instance of Button and hosts it within a parent Grid. 它还使用 LayoutTransform 属性将 RotateTransform 应用到 ButtonIt also uses the LayoutTransform property to apply a RotateTransform to the Button.

Button^ btn2 = gcnew Button();
btn2->Background = Brushes::LightCoral;
btn2->Content = "RotateTransform";
btn2->LayoutTransform = gcnew RotateTransform(45, 25, 25);
Grid::SetRow(btn2, 0);
Grid::SetColumn(btn2, 1);

Button btn2 = new Button();
btn2.Background = Brushes.LightCoral;
btn2.Content = "RotateTransform";
btn2.LayoutTransform = new RotateTransform(45, 25, 25);
Grid.SetRow(btn2, 0);
Grid.SetColumn(btn2, 1);

Dim btn2 As New Button()
btn2.Background = Brushes.LightCoral
btn2.Content = "RotateTransform"
btn2.LayoutTransform = New RotateTransform(45, 25, 25)
Grid.SetRow(btn2, 0)
Grid.SetColumn(btn2, 1)

<Button Grid.Row="0" Grid.Column="1" Background="LightCoral" Content="RotateTransform Applied">
    <RotateTransform CenterX="25" CenterY="25" Angle="45" />


RenderTransform相比,LayoutTransform 将影响布局的结果。In contrast to RenderTransform, LayoutTransform will affect results of layout.

设置转换可提供缩放和旋转的强大功能。Setting a transform provides powerful capabilities of scaling and rotating. LayoutTransform 将忽略 TranslateTransform 操作。However, LayoutTransform ignores TranslateTransform operations. 这是因为的子 FrameworkElement 元素的布局系统行为会自动校正到已缩放或旋转元素位置的任何偏移量,以作为父元素的布局和坐标系统。This is because the layout system behavior for child elements of a FrameworkElement auto-corrects any offsets to the position of a scaled or rotated element into the layout and coordinate system of the parent element.

如果在不需要布局系统进行完全传递的方案中调用,LayoutTransform 可能导致应用程序性能下降。LayoutTransform can lead to poor application performance if you invoke it in a scenario that does not require a full pass by the layout system. LayoutTransform 应用到 PanelChildren 集合时,它会触发布局系统的新传递,并强制值和重新排列所有屏幕对象。When you apply a LayoutTransform to the Children collection of the Panel, it triggers a new pass by the layout system and forces all on-screen objects to be remeasured and rearranged. 如果要更新 用户界面 (UI)user interface (UI)的完整应用程序,则此功能可能正是您所需要的。If you are updating the complete application 用户界面 (UI)user interface (UI), this functionality might be exactly what you need. 但是,如果不需要完全布局处理过程,请使用 RenderTransform 属性,该属性不会调用布局系统,因此通常是此方案的更好选择。However, if you do not need a full layout pass, use the RenderTransform property, which does not invoke the layout system, and therefore, is typically a better choice for this scenario.

LayoutTransform 有用的示例方案包括:将元素(如菜单组件)从水平旋转到垂直,反之亦然,缩放元素(放大)焦点,提供编辑行为,等等。Example scenarios where LayoutTransform would be useful include: rotating elements such as menu components from horizontal to vertical or vice versa, scaling elements (zooming in) on focus, providing editing behavior, etc.

依赖项属性信息Dependency Property Information

标识符字段Identifier field LayoutTransformProperty
元数据属性设置为 trueMetadata properties set to true AffectsMeasure