protected override void Init() { s_lbl = new Label { AutomationId = "lblDisposedCound" }; var tab1 = new DisposePage { Title = "Tab1" }; var tab2 = new DisposePage { Title = "Tab2" }; tab1.RendererDisposed += HandleDispose; tab2.RendererDisposed += HandleDispose; tab2.PopAction = tab1.PopAction = async() => await Navigation.PopAsync(); var tabbedPage = new TabbedPage { Children = { tab1, tab2 } }; var btm = new Button { Text = "Push" }; btm.Clicked += async(object sender, EventArgs e) => { await Navigation.PushAsync(tabbedPage); }; Content = new StackLayout { Children = { btm, s_lbl } }; }
public DisposeGallery() { var disposePage = new DisposePage(); var pushButton = new Button { Text = "Push disposable page" }; var pushModalButton = new Button { Text = "PushModal disposable page" }; pushButton.Clicked += (sender, args) => { disposePage.PopAction = () => Navigation.PopAsync(); Navigation.PushAsync(disposePage); }; pushModalButton.Clicked += (sender, args) => { disposePage.PopAction = () => Navigation.PopModalAsync(); Navigation.PushModalAsync(disposePage); }; var appearingLabel = new Label { Text = "Appearing not sent" }; var disappearingLabel = new Label { Text = "Disappearing not sent" }; var disposedPageLabel = new Label { Text = "Page renderer not yet disposed" }; var disposedLabelsLabel = new Label { Text = "Number of disposed labels: 0" }; disposePage.Appearing += (sender, args) => appearingLabel.Text = "Appearing sent"; disposePage.Disappearing += (sender, args) => disappearingLabel.Text = "Disappearing sent"; disposePage.RendererDisposed += (sender, args) => { disposedPageLabel.Text = "Page renderer disposed"; // give some time for this to propogate Device.StartTimer(TimeSpan.FromSeconds(1), () => { disposedLabelsLabel.Text = "Number of disposed labels: " + disposePage.DisposedLabelCount; return(false); }); }; Content = new StackLayout { Padding = new Thickness(20), Children = { pushButton, pushModalButton, appearingLabel, disappearingLabel, disposedLabelsLabel, disposedPageLabel } }; }