diff options
author | Samantha Houts <samantha@teamredwall.com> | 2016-10-26 12:02:14 -0700 |
---|---|---|
committer | Rui Marinho <me@ruimarinho.net> | 2016-10-26 20:02:14 +0100 |
commit | fc74c65e8ec5e733e6e24a4db968dee430c01f73 (patch) | |
tree | e66d2079c20e7c8dfade4086806d3e37abdd20cf | |
parent | a0fb20a075e89ddb8763faa1306f07041ea3d4fe (diff) | |
download | xamarin-forms-fc74c65e8ec5e733e6e24a4db968dee430c01f73.tar.gz xamarin-forms-fc74c65e8ec5e733e6e24a4db968dee430c01f73.tar.bz2 xamarin-forms-fc74c65e8ec5e733e6e24a4db968dee430c01f73.zip |
[Win] Toolbar placement works with initial value (#488)
* Defer UpdateToolbarPlacement until CommandBar is in the control hierarchy
* Cleanup
4 files changed, 22 insertions, 3 deletions
diff --git a/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/Page.cs b/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/Page.cs index 59e53b5f..fd9503b1 100644 --- a/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/Page.cs +++ b/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/Page.cs @@ -14,7 +14,7 @@ namespace Xamarin.Forms.PlatformConfiguration.WindowsSpecific public static readonly BindableProperty ToolbarPlacementProperty = BindableProperty.CreateAttached("ToolbarPlacement", typeof(ToolbarPlacement), - typeof(Page), ToolbarPlacement.Default); + typeof(FormsElement), ToolbarPlacement.Default); public static ToolbarPlacement GetToolbarPlacement(BindableObject element) { diff --git a/Xamarin.Forms.Platform.UAP/MasterDetailControl.cs b/Xamarin.Forms.Platform.UAP/MasterDetailControl.cs index 51f737f8..dddd0ba6 100644 --- a/Xamarin.Forms.Platform.UAP/MasterDetailControl.cs +++ b/Xamarin.Forms.Platform.UAP/MasterDetailControl.cs @@ -239,6 +239,13 @@ namespace Xamarin.Forms.Platform.UWP _bottomCommandBarArea = GetTemplateChild("BottomCommandBarArea") as Border; _topCommandBarArea = GetTemplateChild("TopCommandBarArea") as Border; + if (_commandBar != null && _bottomCommandBarArea != null && _topCommandBarArea != null) + { + // We have to wait for the command bar to load so that it'll be in the control hierarchy + // otherwise we can't properly move it to wherever the toolbar is supposed to be + _commandBar.Loaded += (sender, args) => UpdateToolbarPlacement(); + } + UpdateToolbarPlacement(); UpdateMode(); diff --git a/Xamarin.Forms.Platform.WinRT.Phone/FormsPivot.cs b/Xamarin.Forms.Platform.WinRT.Phone/FormsPivot.cs index b06acb1f..68586abc 100644 --- a/Xamarin.Forms.Platform.WinRT.Phone/FormsPivot.cs +++ b/Xamarin.Forms.Platform.WinRT.Phone/FormsPivot.cs @@ -77,7 +77,13 @@ namespace Xamarin.Forms.Platform.WinRT #if WINDOWS_UWP _bottomCommandBarArea = GetTemplateChild("BottomCommandBarArea") as Border; _topCommandBarArea = GetTemplateChild("TopCommandBarArea") as Border; - UpdateToolbarPlacement(); + + if (_commandBar != null && _bottomCommandBarArea != null && _topCommandBarArea != null) + { + // We have to wait for the command bar to load so that it'll be in the control hierarchy + // otherwise we can't properly move it to wherever the toolbar is supposed to be + _commandBar.Loaded += (sender, args) => UpdateToolbarPlacement(); + } #endif TaskCompletionSource<CommandBar> tcs = _commandBarTcs; diff --git a/Xamarin.Forms.Platform.WinRT/PageControl.xaml.cs b/Xamarin.Forms.Platform.WinRT/PageControl.xaml.cs index 7be51c05..a57b6749 100644 --- a/Xamarin.Forms.Platform.WinRT/PageControl.xaml.cs +++ b/Xamarin.Forms.Platform.WinRT/PageControl.xaml.cs @@ -150,7 +150,13 @@ namespace Xamarin.Forms.Platform.WinRT #if WINDOWS_UWP _bottomCommandBarArea = GetTemplateChild("BottomCommandBarArea") as Border; _topCommandBarArea = GetTemplateChild("TopCommandBarArea") as Border; - UpdateToolbarPlacement(); + + if (_commandBar != null && _bottomCommandBarArea != null && _topCommandBarArea != null) + { + // We have to wait for the command bar to load so that it'll be in the control hierarchy + // otherwise we can't properly move it to wherever the toolbar is supposed to be + _commandBar.Loaded += (sender, args) => UpdateToolbarPlacement(); + } #endif TaskCompletionSource<CommandBar> tcs = _commandBarTcs; |