summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/DisposedSharedPages.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/DisposedSharedPages.cs')
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/DisposedSharedPages.cs70
1 files changed, 70 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/DisposedSharedPages.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/DisposedSharedPages.cs
new file mode 100644
index 00000000..ae996383
--- /dev/null
+++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/DisposedSharedPages.cs
@@ -0,0 +1,70 @@
+using System;
+
+using Xamarin.Forms;
+
+namespace Xamarin.Forms.Controls
+{
+ public class DisposePage : ContentPage
+ {
+ public event EventHandler RendererDisposed;
+
+ public void SendRendererDisposed ()
+ {
+ var handler = RendererDisposed;
+ if (handler != null)
+ handler (this, EventArgs.Empty);
+ }
+
+ public int DisposedLabelCount { get; private set; }
+
+ public Action PopAction { get; set; }
+ public DisposePage ()
+ {
+ var popButton = new Button {Text = "Pop"};
+ popButton.Clicked += (sender, args) => PopAction ();
+
+ var disposeLabel1 = new DisposeLabel {Text = "Label 1"};
+ var disposeLabel2 = new DisposeLabel {Text = "Label 2"};
+ var disposeLabel3 = new DisposeLabel {Text = "Label 3"};
+ var disposeLabel4 = new DisposeLabel {Text = "Label 4"};
+ var disposeLabel5 = new DisposeLabel {Text = "Label 5"};
+
+ EventHandler disposeHandler = (sender, args) => DisposedLabelCount++;
+ disposeLabel1.RendererDisposed += disposeHandler;
+ disposeLabel2.RendererDisposed += disposeHandler;
+ disposeLabel3.RendererDisposed += disposeHandler;
+ disposeLabel4.RendererDisposed += disposeHandler;
+ disposeLabel5.RendererDisposed += disposeHandler;
+
+ Content = new StackLayout {
+ Children = {
+ popButton,
+ disposeLabel1,
+ disposeLabel2,
+ disposeLabel3,
+ disposeLabel4,
+ new StackLayout {
+ Children = {
+ disposeLabel5,
+ }
+ }
+ }
+ };
+ }
+ }
+
+ public class DisposeLabel : Label
+ {
+ public event EventHandler RendererDisposed;
+
+ public void SendRendererDisposed ()
+ {
+ var handler = RendererDisposed;
+ if (handler != null)
+ handler (this, EventArgs.Empty);
+ }
+ }
+
+}
+
+