blob: ae996383267ef91d954076b79169e2a2b16edcba (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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);
}
}
}
|