2016-12-16 98 views
1

如果我想清除UIElement上的RenderTransform,那么执行此操作的首选方法是什么?双方似乎工作:在WPF中,RenderTransform的null和Identity有什么区别?

MyGrid.RenderTransform = null; 

MyGrid.RenderTransform = Transform.Identity; 

有谁知道其中的差别或是否会有被设置为null任何副作用?

从MSDN:

https://msdn.microsoft.com/en-us/library/system.windows.media.transform.identity(v=vs.110).aspx

当您申请单位矩阵,它不会改变的对象。它就像乘以1.

此外,UIElement.RenderTransform的默认值是Transform.Identity。

https://msdn.microsoft.com/en-us/library/system.windows.uielement.rendertransform(v=vs.110).aspx

回答

2

没有区别。在UIElement.ArrangeCore源代码,你可以看到:

protected virtual void ArrangeCore(Rect finalRect) 
{ 
    this.RenderSize = finalRect.Size; 
    Transform transform = this.RenderTransform; 
    if (transform == Transform.Identity) 
     transform = (Transform) null; 
    // the rest ... 
} 

所以,如果RenderTransform是一种身份 - 因为它是空它的处理。

0

除此之外,它并没有太大的差别,如果你的RenderTransform属性设置为nullTransform.Identity,你可能可能只是想

MyGrid.ClearValue(UIElement.RenderTransformProperty); 
的属性重置为默认值,
相关问题