summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core/MasterDetailPage.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Core/MasterDetailPage.cs')
-rw-r--r--Xamarin.Forms.Core/MasterDetailPage.cs32
1 files changed, 21 insertions, 11 deletions
diff --git a/Xamarin.Forms.Core/MasterDetailPage.cs b/Xamarin.Forms.Core/MasterDetailPage.cs
index a0849aa4..6885ecef 100644
--- a/Xamarin.Forms.Core/MasterDetailPage.cs
+++ b/Xamarin.Forms.Core/MasterDetailPage.cs
@@ -4,7 +4,7 @@ using Xamarin.Forms.Platform;
namespace Xamarin.Forms
{
[RenderWith(typeof(_MasterDetailPageRenderer))]
- public class MasterDetailPage : Page
+ public class MasterDetailPage : Page, IMasterDetailPageController
{
public static readonly BindableProperty IsGestureEnabledProperty = BindableProperty.Create("IsGestureEnabled", typeof(bool), typeof(MasterDetailPage), true);
@@ -89,9 +89,9 @@ namespace Xamarin.Forms
set { SetValue(MasterBehaviorProperty, value); }
}
- internal bool CanChangeIsPresented { get; set; } = true;
+ bool IMasterDetailPageController.CanChangeIsPresented { get; set; } = true;
- internal Rectangle DetailBounds
+ Rectangle IMasterDetailPageController.DetailBounds
{
get { return _detailBounds; }
set
@@ -103,7 +103,7 @@ namespace Xamarin.Forms
}
}
- internal Rectangle MasterBounds
+ Rectangle IMasterDetailPageController.MasterBounds
{
get { return _masterBounds; }
set
@@ -115,7 +115,7 @@ namespace Xamarin.Forms
}
}
- internal bool ShouldShowSplitMode
+ bool IMasterDetailPageController.ShouldShowSplitMode
{
get
{
@@ -156,7 +156,7 @@ namespace Xamarin.Forms
protected override void OnAppearing()
{
- CanChangeIsPresented = true;
+ ((IMasterDetailPageController)this).CanChangeIsPresented = true;
UpdateMasterBehavior(this);
base.OnAppearing();
}
@@ -169,7 +169,7 @@ namespace Xamarin.Forms
return true;
}
- EventHandler<BackButtonPressedEventArgs> handler = BackButtonPressed;
+ EventHandler<BackButtonPressedEventArgs> handler = BackButtonPressedInternal;
if (handler != null)
{
var args = new BackButtonPressedEventArgs();
@@ -193,15 +193,25 @@ namespace Xamarin.Forms
base.OnParentSet();
}
- internal event EventHandler<BackButtonPressedEventArgs> BackButtonPressed;
+ event EventHandler<BackButtonPressedEventArgs> BackButtonPressedInternal;
+ event EventHandler<BackButtonPressedEventArgs> IMasterDetailPageController.BackButtonPressed
+ {
+ add { BackButtonPressedInternal += value; }
+ remove { BackButtonPressedInternal -= value; }
+ }
+
+ void IMasterDetailPageController.UpdateMasterBehavior()
+ {
+ UpdateMasterBehavior(this);
+ }
internal static void UpdateMasterBehavior(MasterDetailPage page)
{
- if (page.ShouldShowSplitMode)
+ if (((IMasterDetailPageController)page).ShouldShowSplitMode)
{
page.SetValueCore(IsPresentedProperty, true);
if (page.MasterBehavior != MasterBehavior.Default)
- page.CanChangeIsPresented = false;
+ ((IMasterDetailPageController)page).CanChangeIsPresented = false;
}
}
@@ -216,7 +226,7 @@ namespace Xamarin.Forms
static void OnIsPresentedPropertyChanging(BindableObject sender, object oldValue, object newValue)
{
var page = (MasterDetailPage)sender;
- if (!page.CanChangeIsPresented)
+ if (!((IMasterDetailPageController)page).CanChangeIsPresented)
throw new InvalidOperationException(string.Format("Can't change IsPresented when setting {0}", page.MasterBehavior));
}