2013-05-11 73 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

相關問題