Ahmad ElMadi
Ahmad ElMadi

Reputation: 2617

Xamarin.Forms How do we remove a child from a TabbedPage's children?

I would like to add and remove child pages from a tabbed page in certain conditions. However, it gives me that collection "Children" is read only . Has anyone succeeded ? Here is the code for TabbedPage

<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
            xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
            xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
            xmlns:partialViews="clr-namespace:TestTabbed.Views.PartialViews;assembly=TestTabbed"
            prism:ViewModelLocator.AutowireViewModel="False"
            x:Class="TestTabbed.Views.MainPage"
            ItemsSource="{Binding ChannelLists}" Appearing="MainPage_OnAppearing"
            Disappearing="MainPage_OnDisappearing">

    <TabbedPage.ItemTemplate>
        <DataTemplate>
            <ContentPage Title="{Binding Name}"  x:Name="mainContentPage">
                <ContentPage.Content>
                    <OnIdiom x:TypeArguments="View">
                        <OnIdiom.Phone>
                            <partialViews:MainPhoneView />
                        </OnIdiom.Phone>
                        <OnIdiom.Tablet>
                            <partialViews:MainTabletView />
                        </OnIdiom.Tablet>
                    </OnIdiom>
                </ContentPage.Content>
            </ContentPage>
        </DataTemplate>
    </TabbedPage.ItemTemplate>

</TabbedPage>

Upvotes: 1

Views: 2839

Answers (1)

hvaughan3
hvaughan3

Reputation: 11105

Seeing your code might be helpful in case I am missing the actual issue but the following should work for you (note that you cannot directly assign a collection to the TabbedPage.Children property which is what it sounds like you are running into):

TabbedPage  tab  = new TabbedPage();
ContentPage page = new ContentPage();

tab.Children.Add(page);
tab.Children.Remove(page);

Where as the following will not work:

TabbedPage tab = new TabbedPage();
tab.Children   = new List<Page>();

Upvotes: 1

Related Questions