2013-05-11 58 views
0

是否有更优雅的方式来更改Xamarin/C#中的View.Frame结构中的单个元素,而无需使用以下模式之一?更优雅的方式来更改C#中的结构中的单个元素

var frame = View.Frame; 
frame.Y = 123; 
View.Frame = frame; 

View.Frame = new RectangleF(View.Frame.X, 123, View.Frame.Width, View.Frame.Height); 

只需改变元素是这样的:View.Frame.Y = 123;没有任何效果。只有整个Frame结构重新分配后才会生效。

+1

它可能没有任何作用,因为'View.Frame'可能是一个属性。当你访问它时,它返回一个Frame的_copy_,因为它是一个值类型。我个人更喜欢你的第一种风格;似乎更清楚你的意图是什么方面正在改变。 (更不用说它避免了碰到Frame属性获取器3次) – 2013-05-11 23:29:00

回答

1

我花了几分钟,并试图拿出一些东西,但因为框架是一个结构它不看还有一个更优雅的方式:

MonoTouch: How to change control's location at runtime?

有一件事你可能做的是创建一个这样的静态工具类,你可以重复使用:

public static class FrameUtil{ 
    public RectangleF UpdateX(RectangleF frame, float newX){ 
      var tempFrame = frame; 
      tempFrame.x = newX; 
      return tempFrame; 
    } 
} 
+0

'View.Frame = new RectangleF(View.Frame.X,123,View.Frame.Width,View.Frame.Height);' 现在: 'View.Frame = FrameHelper.X(View.Frame,123);' 这是一个更好一点。我已经开始使用它了。谢谢。 – 2013-05-13 02:44:02

相关问题