Xamarin.forms 添加或删除部分视图

Xamarin.forms 添加或删除部分视图,xamarin.forms,prism,Xamarin.forms,Prism,我过去打算使用局部视图,但从未这样做。现在我确实有一个需要,但由于某些原因,我不能得到它的权利。我建立了一个棘手的项目 2局部视图 添加和删除每个局部视图 问题。 第一次我似乎能添加/删除视图,第二次我不能。 我想我错过了什么,但不确定是什么? 我似乎无法在代码中添加“x:Name” 有什么建议吗? 谢谢 Xaml public分部类主页面:ContentPage { 公共主页() { 初始化组件(); } 私有void AddViewOne_onclick(对象发送方,事件参数e)

我过去打算使用局部视图,但从未这样做。现在我确实有一个需要,但由于某些原因,我不能得到它的权利。我建立了一个棘手的项目

  • 2局部视图
  • 添加和删除每个局部视图
问题。 第一次我似乎能添加/删除视图,第二次我不能。 我想我错过了什么,但不确定是什么? 我似乎无法在代码中添加“x:Name”

有什么建议吗? 谢谢

Xaml


public分部类主页面:ContentPage
{
公共主页()
{
初始化组件();
}
私有void AddViewOne_onclick(对象发送方,事件参数e)
{
var myView=new PartialViewOne();
SetAutowirePartialView(myView,this);
MyStacklayout.Children.Add(myView);
}
private void AddViewTwo_OnClicked(对象发送方,事件参数e)
{
PartialViewTwo myView=新的PartialViewTwo();
SetAutowirePartialView(myView,this);
MyStacklayout.Children.Add(myView);
}
private void RemoveViewOne_OnClicked(对象发送方,事件参数e)
{
var viewOneParent=(ViewOne.Parent作为布局);
viewOneParent?.Children.Remove(ViewOne);
}
私有void RemoveViewTwo_OnClicked(对象发送方,事件参数e)
{
var viewOneParent=(ViewTwo.Parent作为布局);
viewOneParent?.Children.Remove(ViewTwo);
}
}

我建议…只需隐藏并显示视图1/2…而不是从父级添加/删除(stacklayout)…默认情况下,只需将IsVisible属性设置为false…然后单击“更新IsVisible”按钮property@HamidShaikh谢谢你的回复。我做了一些类似的事情,从Stacklayout.Children代码中添加和删除。
<StackLayout x:Name="MyStacklayout" HorizontalOptions="Center" VerticalOptions="Center">
    <Button x:Name="AddViewOne" Clicked="AddViewOne_OnClicked" Text="Add View One"></Button>
    <Button x:Name="AddViewTwo" Clicked="AddViewTwo_OnClicked" Text="Add View Two"></Button>
    <Button x:Name="RemoveViewOne" Clicked="RemoveViewOne_OnClicked" Text="Remove View One"></Button>
    <Button x:Name="RemoveViewTwo" Clicked="RemoveViewTwo_OnClicked" Text="Remove View Two"></Button>


    <views:PartialViewOne x:Name="ViewOne" mvvm:ViewModelLocator.AutowirePartialView="{x:Reference self}" />
    <views:PartialViewTwo x:Name="ViewTwo" mvvm:ViewModelLocator.AutowirePartialView="{x:Reference self}" />
</StackLayout>
 public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }

    private void AddViewOne_OnClicked(object sender, EventArgs e)
    {
        var myView = new PartialViewOne();
        ViewModelLocator.SetAutowirePartialView(myView, this);
        MyStacklayout.Children.Add(myView);
    }

    private void AddViewTwo_OnClicked(object sender, EventArgs e)
    {
        PartialViewTwo myView = new PartialViewTwo();

        ViewModelLocator.SetAutowirePartialView(myView, this);
        MyStacklayout.Children.Add(myView);
    }

    private void RemoveViewOne_OnClicked(object sender, EventArgs e)
    {
        var viewOneParent = (ViewOne.Parent as Layout<View>);
        viewOneParent?.Children.Remove(ViewOne);
    }
    private void RemoveViewTwo_OnClicked(object sender, EventArgs e)
    {
        var viewOneParent = (ViewTwo.Parent as Layout<View>);
        viewOneParent?.Children.Remove(ViewTwo);
    }
}