summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.ControlGallery.Android/CustomRenderers.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.ControlGallery.Android/CustomRenderers.cs')
-rw-r--r--Xamarin.Forms.ControlGallery.Android/CustomRenderers.cs28
1 files changed, 23 insertions, 5 deletions
diff --git a/Xamarin.Forms.ControlGallery.Android/CustomRenderers.cs b/Xamarin.Forms.ControlGallery.Android/CustomRenderers.cs
index b1bf1fe8..1faa7a98 100644
--- a/Xamarin.Forms.ControlGallery.Android/CustomRenderers.cs
+++ b/Xamarin.Forms.ControlGallery.Android/CustomRenderers.cs
@@ -4,6 +4,7 @@ using Android.App;
using System.Collections.Generic;
using Android.Views;
using System.Collections;
+using System.ComponentModel;
using System.Linq;
using Xamarin.Forms.Controls;
using Xamarin.Forms.Platform.Android;
@@ -29,9 +30,10 @@ using System.Reflection;
#endif
namespace Xamarin.Forms.ControlGallery.Android
{
-
public class NativeDroidMasterDetail : Xamarin.Forms.Platform.Android.AppCompat.MasterDetailPageRenderer
{
+ MasterDetailPage _page;
+
protected override void OnElementChanged(VisualElement oldElement, VisualElement newElement)
{
base.OnElementChanged(oldElement, newElement);
@@ -41,16 +43,32 @@ namespace Xamarin.Forms.ControlGallery.Android
return;
}
- MasterDetailPage page = newElement as MasterDetailPage;
- page.PropertyChanged += (object sender, System.ComponentModel.PropertyChangedEventArgs e) => pChange();
- page.LayoutChanged += Page_LayoutChanged;
+ _page = newElement as MasterDetailPage;
+ _page.PropertyChanged += Page_PropertyChanged;
+ _page.LayoutChanged += Page_LayoutChanged;
+ }
+
+ void Page_PropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)
+ {
+ pChange();
}
- private void Page_LayoutChanged(object sender, EventArgs e)
+ void Page_LayoutChanged(object sender, EventArgs e)
{
pChange();
}
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && _page != null)
+ {
+ _page.LayoutChanged -= Page_LayoutChanged;
+ _page.PropertyChanged -= Page_PropertyChanged;
+ }
+
+ base.Dispose(disposing);
+ }
+
public void pChange()
{
if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)