2016-09-28 39 views
0

我想显示弹出使用AbsoluteLayout。点击按钮后,Iam将stacklayout设置为可见。但没有显示。StackLayout isVisible属性不工作在Xamarin形式

<AbsoluteLayout x:Name="absoluteLayout"> 
    <StackLayout x:Name="layout1" 
      BackgroundColor="White" 
      Spacing="1" 
      AbsoluteLayout.LayoutBounds="0,0,1,1" 
       AbsoluteLayout.LayoutFlags="All"> 
    <StackLayout> 
    <StackLayout x:Name="popupLayout" 
      BackgroundColor="Gray" 
      AbsoluteLayout.LayoutBounds="0,0,1,1" 
      AbsoluteLayout.LayoutFlags="All" 
      IsVisible="False" 
      Spacing="0"> 
    //Content 
    </StackLayout> 
</AbsoluteLayout> 

点击一个按钮,设置能见度为true

public void OnButtonClick(object sender, EventArgs args){ 
    popupLayout.IsVisible = true; 
} 

我试图popupLayout的知名度OnAppearing设置为false,然后启用按钮点击,仍然有同样的行为。

更新:添加代码细节。通过设置popupLayout的背景,我开始知道按钮点击布局是可见的,但其内容/子项不显示。我们是否应该分别启用子视图/元素?

+1

我敢肯定它是ISVISIBLE =与 “假” - >“< - 如果你错过了,你可能有一个编译器的问题,我已经在StackLayouts和Grids上应用了IsVisible并且从来没有遇到过这个问题。但是你也可以检查这篇文章http://stackoverflow.com/questions/29006354/toggling-isvisible-for-an-stacklayout-inside-scrollview-如果您使用的是旧版本的Xamarin,则不会更新。 – eX0du5

+0

您似乎很奇怪不要给任何'AbsoluteLayout'子任何'AbsoluteLayout.LayoutBounds'。如果你这样做会发生什么? –

+0

为了简化,我用这种格式表示了我的代码。 LayoutBounds实际上定义为 – user3165999

回答

1

试试这个

public void OnButtonClick(object sender, EventArgs args){ 
    popupLayout.IsVisible = true; 
    popupLayout.ForceLayout(); 
} 

或者

public void OnButtonClick(object sender, EventArgs args){ 
    popupLayout.IsVisible = true; 
    popupLayout.Parent.ForceLayout(); 
} 
+0

感谢Atul First选项。 – user3165999

相关问题