Xamarin.Forms:在容器中交换视图

时间:2016-03-04 15:49:21

标签: xamarin xamarin.ios containers xamarin.forms master-detail

我创建了一些页面

this.content1 = new DetailPage("ContentPage1");
this.content2 = new DetailPage("ContentPage2");

我定义了一个字段

private View detailView;

具有以下布局

Content = new StackLayout
{
    Padding = new Thickness(0, Device.OnPlatform<int>(20, 0, 0), 0, 0),
    Orientation = StackOrientation.Horizontal,
    Children = {
        buttonContainer,
        this.detailView,
    },
};

点击按钮,即可交换detailView

private void Button1_Clicked(object sender, EventArgs e)
{
    this.detailView = this.content1.Content;
}

调用click事件,但视图未更新。这是在容器中交换“子视图”的错误方法吗?这是怎么做到的?

1 个答案:

答案 0 :(得分:2)

您需要从Children集合中删除当前的detailView,然后再添加新视图。简单地交换detailView的值不会影响可视UI。

如果我正确理解了代码段的上下文,那么这应解决Button1_Clicked处理程序中的问题:

((StackLayout) Content).Children.Remove(this.detailView);
this.detailView = this.content1.Content;
((StackLayout) Content).Children.Add(this.detailView);