diff options
author | E.Z. Hart <hartez@users.noreply.github.com> | 2016-05-04 08:22:34 -0600 |
---|---|---|
committer | Rui Marinho <me@ruimarinho.net> | 2016-05-04 15:22:34 +0100 |
commit | a8acdcc11793c9f44098f2cd478d51677d742945 (patch) | |
tree | 811cf1ee2e2ff0baa8674f116b6b5c08590f56cf /Xamarin.Forms.Core | |
parent | 8d383746caab00dd3ee0b62dc992a2a99c7a6d06 (diff) | |
download | xamarin-forms-a8acdcc11793c9f44098f2cd478d51677d742945.tar.gz xamarin-forms-a8acdcc11793c9f44098f2cd478d51677d742945.tar.bz2 xamarin-forms-a8acdcc11793c9f44098f2cd478d51677d742945.zip |
Add IMasterDetailPageController and update renderers (#146)
Diffstat (limited to 'Xamarin.Forms.Core')
-rw-r--r-- | Xamarin.Forms.Core/IMasterDetailPageController.cs | 19 | ||||
-rw-r--r-- | Xamarin.Forms.Core/MasterDetailPage.cs | 32 | ||||
-rw-r--r-- | Xamarin.Forms.Core/Xamarin.Forms.Core.csproj | 1 |
3 files changed, 41 insertions, 11 deletions
diff --git a/Xamarin.Forms.Core/IMasterDetailPageController.cs b/Xamarin.Forms.Core/IMasterDetailPageController.cs new file mode 100644 index 00000000..1aa019cb --- /dev/null +++ b/Xamarin.Forms.Core/IMasterDetailPageController.cs @@ -0,0 +1,19 @@ +using System; + +namespace Xamarin.Forms +{ + public interface IMasterDetailPageController + { + bool CanChangeIsPresented { get; set; } + + Rectangle DetailBounds { get; set; } + + Rectangle MasterBounds { get; set; } + + bool ShouldShowSplitMode { get; } + + void UpdateMasterBehavior(); + + event EventHandler<BackButtonPressedEventArgs> BackButtonPressed; + } +}
\ No newline at end of file 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)); } diff --git a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj index 32cd9b88..1c11517a 100644 --- a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj +++ b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj @@ -95,6 +95,7 @@ <Compile Include="IEntryController.cs" /> <Compile Include="IImageController.cs" /> <Compile Include="INavigationPageController.cs" /> + <Compile Include="IMasterDetailPageController.cs" /> <Compile Include="Internals\EvalRequested.cs" /> <Compile Include="ExportEffectAttribute.cs" /> <Compile Include="ExpressionSearch.cs" /> |