我创建了一些页面
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事件,但视图未更新。这是在容器中交换“子视图”的错误方法吗?这是怎么做到的?
答案 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);