Xamarin.Forms - 改变后面代码中的控件大小

时间:2015-08-25 13:31:37

标签: c# xamarin.forms

我想在Xamarin.Forms中更改控件的大小,并在控件后面的代码中添加一些事件。

特别是,当设备的方向发生变化时,我想更改StackLayout的大小。

现在,我已经这样做了(但它不起作用):

private void SettingsPage_OnSizeChanged(object sender, EventArgs e)
{
    var isPortrait = UIHelpers.IsPortrait(this);
    if (isPortrait)
        RemoteServerSL.WidthRequest = RemoteServerSL.ParentView.Width;
    else
    {
        RemoteServerSL.WidthRequest = RemoteServerSL.ParentView.Width/2;
    }

    this.UpdateChildrenLayout();
    this.ForceLayout();
    RemoteServerSL.ForceLayout();

}

如果我处于横向模式,目的是将StackLayout的宽度更改为parentWidth。

我该如何处理?

BTW。我现在在Android上工作。

1 个答案:

答案 0 :(得分:0)

您应该使用OnSizeAllocated方法覆盖来检测方向更改;

double previousWidth;
double previousHeight;

    protected override void OnSizeAllocated(double width, double height)
    {
        base.OnSizeAllocated(width, height);

        if (previousWidth != width || previousHeight != height)
        {
            previousWidth = width;
            previousHeight = height;

            if (width > height)
            {
                // landscape mode
            }
            else
            {
                // portrait mode
            }   
        }
    }