diff options
150 files changed, 5473 insertions, 775 deletions
diff --git a/.nuspec/Xamarin.Forms.nuspec b/.nuspec/Xamarin.Forms.nuspec index 16520f0f..89c97507 100644 --- a/.nuspec/Xamarin.Forms.nuspec +++ b/.nuspec/Xamarin.Forms.nuspec @@ -236,10 +236,13 @@ <file src="..\Xamarin.Forms.Platform.UAP\Properties\Xamarin.Forms.Platform.UAP.rd.xml" target="lib\uap10.0\Xamarin.Forms.Platform.UAP\Properties" /> - <file src="..\Xamarin.Forms.Platform.UAP\bin\$Configuration$\PageControl.xbf" target="lib\uap10.0\Xamarin.Forms.Platform.UAP" /> - <file src="..\Xamarin.Forms.Platform.UAP\bin\$Configuration$\Resources.xbf" target="lib\uap10.0\Xamarin.Forms.Platform.UAP" /> - <file src="..\Xamarin.Forms.Platform.UAP\bin\$Configuration$\FormsTextBoxStyle.xbf" target="lib\uap10.0\Xamarin.Forms.Platform.UAP" /> + <file src="..\Xamarin.Forms.Platform.UAP\bin\$Configuration$\PageControl.xbf" target="lib\uap10.0\Xamarin.Forms.Platform.UAP" /> + <file src="..\Xamarin.Forms.Platform.UAP\bin\$Configuration$\Resources.xbf" target="lib\uap10.0\Xamarin.Forms.Platform.UAP" /> + <file src="..\Xamarin.Forms.Platform.UAP\bin\$Configuration$\FormsTextBoxStyle.xbf" target="lib\uap10.0\Xamarin.Forms.Platform.UAP" /> <file src="..\Xamarin.Forms.Platform.UAP\bin\$Configuration$\AutoSuggestStyle.xbf" target="lib\uap10.0\Xamarin.Forms.Platform.UAP" /> + <file src="..\Xamarin.Forms.Platform.UAP\bin\$Configuration$\MasterDetailControlStyle.xbf" target="lib\uap10.0\Xamarin.Forms.Platform.UAP" /> + <file src="..\Xamarin.Forms.Platform.UAP\bin\$Configuration$\PageControlStyle.xbf" target="lib\uap10.0\Xamarin.Forms.Platform.UAP" /> + <file src="..\Xamarin.Forms.Platform.UAP\bin\$Configuration$\TabbedPageStyle.xbf" target="lib\uap10.0\Xamarin.Forms.Platform.UAP" /> <file src="..\Xamarin.Forms.Core\bin\$Configuration$\Xamarin.Forms.Core.dll" target="lib\uap10.0" /> <file src="..\docs\Xamarin.Forms.Core.xml" target="lib\uap10.0" /> diff --git a/Xamarin.Forms.ControlGallery.WindowsUniversal/App.xaml.cs b/Xamarin.Forms.ControlGallery.WindowsUniversal/App.xaml.cs index 288d008b..62536444 100644 --- a/Xamarin.Forms.ControlGallery.WindowsUniversal/App.xaml.cs +++ b/Xamarin.Forms.ControlGallery.WindowsUniversal/App.xaml.cs @@ -45,7 +45,7 @@ namespace Xamarin.Forms.ControlGallery.WindowsUniversal #if DEBUG if (System.Diagnostics.Debugger.IsAttached) { - DebugSettings.EnableFrameRateCounter = true; + // DebugSettings.EnableFrameRateCounter = true; } #endif diff --git a/Xamarin.Forms.ControlGallery.iOS/Properties/AssemblyInfo.cs b/Xamarin.Forms.ControlGallery.iOS/Properties/AssemblyInfo.cs index bb8d76cb..e7f2b400 100644 --- a/Xamarin.Forms.ControlGallery.iOS/Properties/AssemblyInfo.cs +++ b/Xamarin.Forms.ControlGallery.iOS/Properties/AssemblyInfo.cs @@ -34,3 +34,4 @@ using System.Runtime.InteropServices; // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion ("1.0.0.0")] [assembly: AssemblyFileVersion ("1.0.0.0")] +[assembly: Xamarin.Forms.ResolutionGroupName("XamControl")] diff --git a/Xamarin.Forms.ControlGallery.iOS/Xamarin.Forms.ControlGallery.iOS.csproj b/Xamarin.Forms.ControlGallery.iOS/Xamarin.Forms.ControlGallery.iOS.csproj index 50b3632b..d3dc36b2 100644 --- a/Xamarin.Forms.ControlGallery.iOS/Xamarin.Forms.ControlGallery.iOS.csproj +++ b/Xamarin.Forms.ControlGallery.iOS/Xamarin.Forms.ControlGallery.iOS.csproj @@ -23,11 +23,11 @@ <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <ConsolePause>false</ConsolePause> - <MtouchArch>Default, i386, x86_64</MtouchArch> - <MtouchLink>SdkOnly</MtouchLink> + <MtouchArch>i386, x86_64</MtouchArch> + <MtouchLink>None</MtouchLink> <MtouchDebug>True</MtouchDebug> <CodesignEntitlements>Entitlements.plist</CodesignEntitlements> - <MtouchSdkVersion>7.0</MtouchSdkVersion> + <MtouchSdkVersion>9.3</MtouchSdkVersion> <MtouchProfiling>False</MtouchProfiling> <MtouchFastDev>False</MtouchFastDev> <MtouchEnableGenericValueTypeSharing>True</MtouchEnableGenericValueTypeSharing> @@ -36,8 +36,12 @@ <MtouchUseSGen>False</MtouchUseSGen> <MtouchUseRefCounting>False</MtouchUseRefCounting> <MtouchOptimizePNGs>False</MtouchOptimizePNGs> - <MtouchI18n /> <TreatWarningsAsErrors>true</TreatWarningsAsErrors> + <MtouchEnableBitcode>False</MtouchEnableBitcode> + <OptimizePNGs>True</OptimizePNGs> + <MtouchTlsProvider>Default</MtouchTlsProvider> + <MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler> + <MtouchFloat32>False</MtouchFloat32> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' "> <DebugType>none</DebugType> diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/PlatformSpecifics_iOSTranslucentNavBarX.xaml b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/PlatformSpecifics_iOSTranslucentNavBarX.xaml new file mode 100644 index 00000000..3b1318b0 --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/PlatformSpecifics_iOSTranslucentNavBarX.xaml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" ?> +<local:TestNavigationPage xmlns="http://xamarin.com/schemas/2014/forms" + xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" + xmlns:local="clr-namespace:Xamarin.Forms.Controls" + xmlns:iOsSpecific="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core" + x:Class="Xamarin.Forms.Controls.Issues.PlatformSpecifics_iOSTranslucentNavBarX" + BackgroundColor="Pink" + iOsSpecific:NavigationPage.IsNavigationBarTranslucent="true"> +</local:TestNavigationPage>
\ No newline at end of file diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/PlatformSpecifics_iOSTranslucentNavBarX.xaml.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/PlatformSpecifics_iOSTranslucentNavBarX.xaml.cs new file mode 100644 index 00000000..601a17af --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/PlatformSpecifics_iOSTranslucentNavBarX.xaml.cs @@ -0,0 +1,44 @@ +using Xamarin.Forms; +using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.Internals; +using Xamarin.Forms.PlatformConfiguration; +using Xamarin.Forms.PlatformConfiguration.iOSSpecific; +using Xamarin.Forms.Xaml; + +namespace Xamarin.Forms.Controls.Issues +{ + [Preserve(AllMembers = true)] + [Issue(IssueTracker.None, 0, "Platform Specifics - iOS Translucent Navigation Bar XAML", PlatformAffected.iOS)] +#if APP + [XamlCompilation(XamlCompilationOptions.Compile)] +#endif + public partial class PlatformSpecifics_iOSTranslucentNavBarX : TestNavigationPage + { + public PlatformSpecifics_iOSTranslucentNavBarX() + { +#if APP + InitializeComponent (); +#endif + } + + protected override void Init() + { + var button = new Button { Text = "Toggle Translucent", BackgroundColor = Color.Yellow }; + + button.Clicked += (sender, args) => On<iOS>().SetIsNavigationBarTranslucent(!On<iOS>().IsNavigationBarTranslucent()); + + var content = new ContentPage + { + Title = "iOS Translucent Navigation Bar", + Content = new StackLayout + { + VerticalOptions = LayoutOptions.Center, + HorizontalOptions = LayoutOptions.Center, + Children = { button } + } + }; + + PushAsync(content); + } + } +} diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems index 1b4e0b8c..88cfb0bd 100644 --- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems @@ -168,6 +168,10 @@ <Compile Include="$(MSBuildThisFileDirectory)Bugzilla39829.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla39458.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla39853.cs" /> + <Compile Include="$(MSBuildThisFileDirectory)PlatformSpecifics_iOSTranslucentNavBarX.xaml.cs"> + <DependentUpon>PlatformSpecifics_iOSTranslucentNavBarX.xaml</DependentUpon> + <SubType>Code</SubType> + </Compile> <Compile Include="$(MSBuildThisFileDirectory)TestPages\ScreenshotConditionalApp.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla41842.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla42277.cs" /> @@ -558,6 +562,12 @@ </EmbeddedResource> </ItemGroup> <ItemGroup> + <EmbeddedResource Include="$(MSBuildThisFileDirectory)PlatformSpecifics_iOSTranslucentNavBarX.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:UpdateDesignTimeXaml</Generator> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> <EmbeddedResource Include="$(MSBuildThisFileDirectory)Bugzilla42069_Page.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:UpdateDesignTimeXaml</Generator> diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/_Template.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/_Template.cs index 05a3a7d2..79ce604b 100644 --- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/_Template.cs +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/_Template.cs @@ -1,6 +1,4 @@ -using System; - -using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.CustomAttributes; using Xamarin.Forms.Internals; #if UITEST @@ -10,14 +8,15 @@ using NUnit.Framework; namespace Xamarin.Forms.Controls { - [Preserve (AllMembers = true)] - [Issue (IssueTracker.Github, 1, "Issue Description")] + [Preserve(AllMembers = true)] + [Issue(IssueTracker.Github, 1, "Issue Description")] public class Issue1 : TestContentPage // or TestMasterDetailPage, etc ... { - protected override void Init () + protected override void Init() { // Initialize ui here instead of ctor - Content = new Label { + Content = new Label + { AutomationId = "IssuePageLabel", Text = "See if I'm here" }; @@ -33,4 +32,4 @@ namespace Xamarin.Forms.Controls } #endif } -} +}
\ No newline at end of file diff --git a/Xamarin.Forms.Controls/App.cs b/Xamarin.Forms.Controls/App.cs index af7e999c..c6480040 100644 --- a/Xamarin.Forms.Controls/App.cs +++ b/Xamarin.Forms.Controls/App.cs @@ -3,7 +3,8 @@ using System.Collections.Generic; using System.IO; using System.Reflection; using System.Threading.Tasks; -using Xamarin.Forms.Controls.Issues; +using Xamarin.Forms.PlatformConfiguration; +using Xamarin.Forms.PlatformConfiguration.WindowsSpecific; namespace Xamarin.Forms.Controls { @@ -34,7 +35,6 @@ namespace Xamarin.Forms.Controls protected override void OnAppLinkRequestReceived(Uri uri) { - var appDomain = "http://" + AppName.ToLowerInvariant() + "/"; if (!uri.ToString().ToLowerInvariant().StartsWith(appDomain)) diff --git a/Xamarin.Forms.Controls/CoreGallery.cs b/Xamarin.Forms.Controls/CoreGallery.cs index dc3217ca..7986a45c 100644 --- a/Xamarin.Forms.Controls/CoreGallery.cs +++ b/Xamarin.Forms.Controls/CoreGallery.cs @@ -220,6 +220,7 @@ namespace Xamarin.Forms.Controls public CorePageView (Page rootPage, NavigationBehavior navigationBehavior = NavigationBehavior.PushAsync) { var pages = new List<Page> { + new PlatformSpecificsGallery() {Title = "Platform Specifics"}, new AppLinkPageGallery {Title = "App Link Page Gallery"}, new NestedNativeControlGalleryPage {Title = "Nested Native Controls Gallery"}, new CellForceUpdateSizeGalleryPage {Title = "Cell Force Update Size Gallery"}, diff --git a/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/ApplicationAndroid.cs b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/ApplicationAndroid.cs new file mode 100644 index 00000000..4290adff --- /dev/null +++ b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/ApplicationAndroid.cs @@ -0,0 +1,40 @@ +using System.Windows.Input; +using Xamarin.Forms.PlatformConfiguration; +using Xamarin.Forms.PlatformConfiguration.AndroidSpecific; + +namespace Xamarin.Forms.Controls.GalleryPages.PlatformSpecificsGalleries +{ + public class ApplicationAndroid : ContentPage + { + public ApplicationAndroid(ICommand restore) + { + var restoreButton = new Button { Text = "Back To Gallery" }; + restoreButton.Clicked += (sender, args) => restore.Execute(null); + + var button1 = GetButton(WindowSoftInputModeAdjust.Pan); + var button2 = GetButton(WindowSoftInputModeAdjust.Resize); + var buttons = new StackLayout { Orientation = StackOrientation.Horizontal, Children = { button1, button2 }, VerticalOptions = LayoutOptions.Start }; + var entry = new Entry { Text = "1", VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.StartAndExpand }; + var layout = new RelativeLayout + { + VerticalOptions = LayoutOptions.StartAndExpand, + HorizontalOptions = LayoutOptions.Center, + }; + layout.Children.Add(buttons, yConstraint: Xamarin.Forms.Constraint.RelativeToParent(parent => { return parent.Y; })); + layout.Children.Add(entry, yConstraint: Xamarin.Forms.Constraint.RelativeToParent(parent => { return parent.Height - 100; })); + + Content = layout; + Title = "Application Features"; + } + + static Button GetButton(WindowSoftInputModeAdjust value) + { + var button = new Button { Text = value.ToString(), Margin = 20 }; + button.Clicked += (sender, args) => + { + Application.Current.On<Android>().UseWindowSoftInputModeAdjust(value); + }; + return button; + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/MasterDetailPageWindows.cs b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/MasterDetailPageWindows.cs new file mode 100644 index 00000000..d862c167 --- /dev/null +++ b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/MasterDetailPageWindows.cs @@ -0,0 +1,192 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Windows.Input; +using Xamarin.Forms.PlatformConfiguration; +using Xamarin.Forms.PlatformConfiguration.WindowsSpecific; +using static Xamarin.Forms.Controls.GalleryPages.PlatformSpecificsGalleries.WindowsPlatformSpecificsGalleryHelpers; + +namespace Xamarin.Forms.Controls.GalleryPages.PlatformSpecificsGalleries +{ + public class MasterDetailPageWindows : MasterDetailPage + { + public MasterDetailPageWindows(ICommand restore) + { + On<Windows>() + .SetCollapseStyle(CollapseStyle.Partial); + MasterBehavior = MasterBehavior.Popover; + + var master = new ContentPage { Title = "Master Detail Page" }; + var masterContent = new StackLayout { Spacing = 10, Margin = new Thickness(0, 10, 5, 0) }; + var detail = new ContentPage { Title = "This is the detail page's Title" }; + + // Build the navigation pane items + var navItems = new List<NavItem> + { + new NavItem("Display Alert", "\uE171", new Command(() => DisplayAlert("Alert", "This is an alert", "OK"))), + new NavItem("Return To Gallery", "\uE106", restore), + new NavItem("Save", "\uE105", new Command(() => DisplayAlert("Save", "Fake save dialog", "OK"))), + new NavItem("Audio", "\uE189", new Command(() => DisplayAlert("Audio", "Never gonna give you up...", "OK"))), + new NavItem("Set Detail to Navigation Page", "\uE16F", new Command(() => Detail = CreateNavigationPage())), + new NavItem("Set Detail to Content Page", "\uE160", new Command(() => Detail = detail)), + }; + + var navList = new NavList(navItems); + + // And add them to the navigation pane's content + masterContent.Children.Add(navList); + master.Content = masterContent; + + var detailContent = new StackLayout { VerticalOptions = LayoutOptions.Fill, HorizontalOptions = LayoutOptions.Fill }; + detailContent.Children.Add(new Label + { + Text = "Platform Features", + FontAttributes = FontAttributes.Bold, + HorizontalTextAlignment = TextAlignment.Center, + VerticalTextAlignment = TextAlignment.Center + }); + + detailContent.Children.Add(CreateCollapseStyleChanger(this)); + detailContent.Children.Add(CreateToolbarPlacementChanger(this)); + detailContent.Children.Add(CreateCollapseWidthAdjuster(this)); + detailContent.Children.Add(CreateAddRemoveToolBarItemButtons(this)); + + detail.Content = detailContent; + + Master = master; + + AddToolBarItems(this); + + Detail = detail; + } + + static Layout CreateCollapseStyleChanger(MasterDetailPage page) + { + Type enumType = typeof(CollapseStyle); + + return CreateChanger(enumType, + Enum.GetName(enumType, page.On<Windows>().GetCollapseStyle()), + picker => + { + page.On<Windows>().SetCollapseStyle((CollapseStyle)Enum.Parse(enumType, picker.Items[picker.SelectedIndex])); + }, + "Select Collapse Style"); + } + + static Layout CreateCollapseWidthAdjuster(MasterDetailPage page) + { + var adjustCollapseWidthLabel = new Label + { + Text = "Adjust Collapsed Width", + VerticalTextAlignment = TextAlignment.Center, + VerticalOptions = LayoutOptions.Center + }; + var adjustCollapseWidthEntry = new Entry { Text = page.On<Windows>().CollapsedPaneWidth().ToString() }; + var adjustCollapseWidthButton = new Button { Text = "Change", BackgroundColor = Color.Gray }; + adjustCollapseWidthButton.Clicked += (sender, args) => + { + double newWidth; + if (double.TryParse(adjustCollapseWidthEntry.Text, out newWidth)) + { + page.On<Windows>().CollapsedPaneWidth(newWidth); + } + }; + + var adjustCollapsedWidthSection = new StackLayout + { + HorizontalOptions = LayoutOptions.Center, + Orientation = StackOrientation.Horizontal, + Children = { adjustCollapseWidthLabel, adjustCollapseWidthEntry, adjustCollapseWidthButton } + }; + + return adjustCollapsedWidthSection; + } + + public class NavItem + { + public NavItem(string text, string icon, ICommand command) + { + Text = text; + Icon = icon; + Command = command; + } + + public ICommand Command { get; set; } + + public string Icon { get; set; } + + public string Text { get; set; } + } + + public class NavList : ListView + { + public NavList(IEnumerable<NavItem> items) + { + ItemsSource = items; + ItemTapped += (sender, args) => (args.Item as NavItem)?.Command.Execute(null); + + ItemTemplate = new DataTemplate(() => + { + var grid = new Grid(); + grid.ColumnDefinitions.Add(new ColumnDefinition { Width = 48 }); + grid.ColumnDefinitions.Add(new ColumnDefinition { Width = 200 }); + + grid.Margin = new Thickness(0, 10, 0, 10); + + var text = new Label + { + VerticalOptions = LayoutOptions.Fill + }; + text.SetBinding(Label.TextProperty, "Text"); + + var glyph = new Label + { + FontFamily = "Segoe MDL2 Assets", + FontSize = 24, + HorizontalTextAlignment = TextAlignment.Center + }; + + glyph.SetBinding(Label.TextProperty, "Icon"); + + grid.Children.Add(glyph); + grid.Children.Add(text); + + Grid.SetColumn(glyph, 0); + Grid.SetColumn(text, 1); + + grid.WidthRequest = 48; + + var cell = new ViewCell + { + View = grid + }; + + return cell; + }); + } + } + + static NavigationPage CreateNavigationPage() + { + var page = new NavigationPage { Title = "This is the Navigation Page Title" }; + + page.PushAsync(CreateNavSubPage()); + + return page; + } + + static ContentPage CreateNavSubPage() + { + var page = new ContentPage(); + + var label = new Label { Text = "This is content in a nav page" }; + var button = new Button() { Text = "Push Another Page"}; + + button.Clicked += (sender, args) => page.Navigation.PushAsync(CreateNavSubPage()); + + page.Content = new StackLayout { Children = { label, button } }; + + return page; + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/NavigationPageWindows.cs b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/NavigationPageWindows.cs new file mode 100644 index 00000000..1143678b --- /dev/null +++ b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/NavigationPageWindows.cs @@ -0,0 +1,68 @@ +using System.Windows.Input; + +namespace Xamarin.Forms.Controls.GalleryPages.PlatformSpecificsGalleries +{ + public class NavigationPageWindows : NavigationPage + { + public NavigationPageWindows(ICommand restore) + { + PushAsync(CreateRoot(restore)); + WindowsPlatformSpecificsGalleryHelpers.AddToolBarItems(this); + } + + ContentPage CreateRoot(ICommand restore) + { + var page = new ContentPage { Title = "Content Page Title" }; + + var content = new StackLayout + { + VerticalOptions = LayoutOptions.Fill, + HorizontalOptions = LayoutOptions.Fill + }; + content.Children.Add(new Label + { + Text = "Navigation Page Windows Features", + FontAttributes = FontAttributes.Bold, + HorizontalTextAlignment = TextAlignment.Center, + VerticalTextAlignment = TextAlignment.Center + }); + + content.Children.Add(WindowsPlatformSpecificsGalleryHelpers.CreateToolbarPlacementChanger(this)); + content.Children.Add(WindowsPlatformSpecificsGalleryHelpers.CreateAddRemoveToolBarItemButtons(this)); + + var restoreButton = new Button { Text = "Back To Gallery" }; + restoreButton.Clicked += (sender, args) => restore.Execute(null); + content.Children.Add(restoreButton); + + var navButton = new Button { Text = "Push Page (with no title)" }; + navButton.Clicked += (sender, args) => PushAsync(CreatePageWithNoTitle()); + content.Children.Add(navButton); + + page.Content = content; + + return page; + } + + ContentPage CreatePageWithNoTitle() + { + var page = new ContentPage { }; + + var content = new StackLayout + { + VerticalOptions = LayoutOptions.Fill, + HorizontalOptions = LayoutOptions.Fill + }; + content.Children.Add(new Label + { + Text = "Page 2", + FontAttributes = FontAttributes.Bold, + HorizontalTextAlignment = TextAlignment.Center, + VerticalTextAlignment = TextAlignment.Center + }); + + page.Content = content; + + return page; + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/NavigationPageiOS.cs b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/NavigationPageiOS.cs new file mode 100644 index 00000000..92f278bb --- /dev/null +++ b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/NavigationPageiOS.cs @@ -0,0 +1,40 @@ +using System.Windows.Input; +using Xamarin.Forms.PlatformConfiguration; +using Xamarin.Forms.PlatformConfiguration.iOSSpecific; + +namespace Xamarin.Forms.Controls.GalleryPages.PlatformSpecificsGalleries +{ + public class NavigationPageiOS : NavigationPage + { + public static NavigationPageiOS Create(ICommand restore) + { + var restoreButton = new Button { Text = "Back To Gallery" }; + restoreButton.Clicked += (sender, args) => restore.Execute(null); + + var translucentToggleButton = new Button { Text = "Toggle Translucent NavBar" }; + + var content = new ContentPage + { + Title = "Navigation Page Features", + Content = new StackLayout + { + VerticalOptions = LayoutOptions.Center, + HorizontalOptions = LayoutOptions.Center, + Children = { translucentToggleButton, restoreButton } + } + }; + + var navPage = new NavigationPageiOS(content, restore); + + translucentToggleButton.Clicked += (sender, args) => navPage.On<iOS>().SetIsNavigationBarTranslucent(!navPage.On<iOS>().IsNavigationBarTranslucent()); + + return navPage; + } + + public NavigationPageiOS(Page root, ICommand restore) : base(root) + { + BackgroundColor = Color.Pink; + On<iOS>().EnableTranslucentNavigationBar(); + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/TabbedPageWindows.cs b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/TabbedPageWindows.cs new file mode 100644 index 00000000..11b5d8c4 --- /dev/null +++ b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/TabbedPageWindows.cs @@ -0,0 +1,65 @@ +using System.Windows.Input; + +namespace Xamarin.Forms.Controls.GalleryPages.PlatformSpecificsGalleries +{ + public class TabbedPageWindows : TabbedPage + { + public TabbedPageWindows(ICommand restore) + { + Children.Add(CreateFirstPage(restore)); + Children.Add(CreateSecondPage()); + WindowsPlatformSpecificsGalleryHelpers.AddToolBarItems(this); + } + + ContentPage CreateFirstPage(ICommand restore) + { + var page = new ContentPage { Title = "Content Page Title" }; + + var content = new StackLayout + { + VerticalOptions = LayoutOptions.Fill, + HorizontalOptions = LayoutOptions.Fill + }; + content.Children.Add(new Label + { + Text = "Tabbed Page Windows Features", + FontAttributes = FontAttributes.Bold, + HorizontalTextAlignment = TextAlignment.Center, + VerticalTextAlignment = TextAlignment.Center + }); + + content.Children.Add(WindowsPlatformSpecificsGalleryHelpers.CreateToolbarPlacementChanger(this)); + content.Children.Add(WindowsPlatformSpecificsGalleryHelpers.CreateAddRemoveToolBarItemButtons(this)); + + var restoreButton = new Button { Text = "Back To Gallery" }; + restoreButton.Clicked += (sender, args) => restore.Execute(null); + content.Children.Add(restoreButton); + + page.Content = content; + + return page; + } + + static Page CreateSecondPage() + { + var cp = new ContentPage { Title = "Second Content Page" }; + + var content = new StackLayout + { + VerticalOptions = LayoutOptions.Fill, + HorizontalOptions = LayoutOptions.Fill + }; + content.Children.Add(new Label + { + Text = "Page 2", + FontAttributes = FontAttributes.Bold, + HorizontalTextAlignment = TextAlignment.Center, + VerticalTextAlignment = TextAlignment.Center + }); + + cp.Content = content; + + return cp; + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/VisualElementiOS.cs b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/VisualElementiOS.cs new file mode 100644 index 00000000..410d9157 --- /dev/null +++ b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/VisualElementiOS.cs @@ -0,0 +1,34 @@ +using System.Windows.Input; +using Xamarin.Forms.PlatformConfiguration; +using Xamarin.Forms.PlatformConfiguration.iOSSpecific; + +namespace Xamarin.Forms.Controls.GalleryPages.PlatformSpecificsGalleries +{ + public class VisualElementiOS : ContentPage + { + public VisualElementiOS(ICommand restore) + { + var restoreButton = new Button { Text = "Back To Gallery" }; + restoreButton.Clicked += (sender, args) => restore.Execute(null); + + var image = new Image { Source = ImageSource.FromFile("crimson.jpg") }; + var box = new BoxView { HeightRequest = 300, WidthRequest = 600 }; + box.On<iOS>().UseBlurEffect(BlurEffectStyle.Light); + Button button1 = GetButton(box, BlurEffectStyle.None); + Button button2 = GetButton(box, BlurEffectStyle.ExtraLight); + Button button3 = GetButton(box, BlurEffectStyle.Light); + Button button4 = GetButton(box, BlurEffectStyle.Dark); + var buttons = new StackLayout { Orientation = StackOrientation.Horizontal, Children = { button1, button2, button3, button4 } }; + + Content = new StackLayout { Children = { buttons, new AbsoluteLayout { Children = { image, box } } } }; + Title = "Visual Element Features"; + } + + Button GetButton(BoxView box, BlurEffectStyle value) + { + var button1 = new Button { Text = value.ToString(), Margin = 25 }; + button1.Clicked += (s, e) => { box.On<iOS>().UseBlurEffect(value); }; + return button1; + } + } +} diff --git a/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/WindowsPlatformSpecificsGalleryHelpers.cs b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/WindowsPlatformSpecificsGalleryHelpers.cs new file mode 100644 index 00000000..08371919 --- /dev/null +++ b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/WindowsPlatformSpecificsGalleryHelpers.cs @@ -0,0 +1,141 @@ +using System; +using System.Linq; +using Xamarin.Forms.PlatformConfiguration; +using Xamarin.Forms.PlatformConfiguration.WindowsSpecific; + +namespace Xamarin.Forms.Controls.GalleryPages.PlatformSpecificsGalleries +{ + internal static class WindowsPlatformSpecificsGalleryHelpers + { + const string CommandBarActionTitle = "Hey!"; + const string CommandBarActionMessage = "Command Bar Item Clicked"; + const string CommandBarActionDismiss = "OK"; + + public static void AddToolBarItems(Page page) + { + Action action = () => page.DisplayAlert(CommandBarActionTitle, CommandBarActionMessage, CommandBarActionDismiss); + + var tb1 = new ToolbarItem("Primary 1", "coffee.png", action, ToolbarItemOrder.Primary) + { + IsEnabled = true, + AutomationId = "toolbaritem_primary1" + }; + + var tb2 = new ToolbarItem("Primary 2", "coffee.png", action, ToolbarItemOrder.Primary) + { + IsEnabled = true, + AutomationId = "toolbaritem_primary2" + }; + + var tb3 = new ToolbarItem("Seconday 1", "coffee.png", action, ToolbarItemOrder.Secondary) + { + IsEnabled = true, + AutomationId = "toolbaritem_secondary3" + }; + + var tb4 = new ToolbarItem("Secondary 2", "coffee.png", action, ToolbarItemOrder.Secondary) + { + IsEnabled = true, + AutomationId = "toolbaritem_secondary4" + }; + + page.ToolbarItems.Add(tb1); + page.ToolbarItems.Add(tb2); + page.ToolbarItems.Add(tb3); + page.ToolbarItems.Add(tb4); + } + + public static Layout CreateChanger(Type enumType, string defaultOption, Action<Picker> selectedIndexChanged, string label) + { + var picker = new Picker(); + string[] options = Enum.GetNames(enumType); + foreach (string option in options) + { + picker.Items.Add(option); + } + + picker.SelectedIndex = options.IndexOf(defaultOption); + + picker.SelectedIndexChanged += (sender, args) => + { + selectedIndexChanged(picker); + }; + + var changerLabel = new Label { Text = label, VerticalOptions = LayoutOptions.Center }; + + var layout = new Grid + { + HorizontalOptions = LayoutOptions.Center, + ColumnDefinitions = new ColumnDefinitionCollection + { + new ColumnDefinition { Width = 150 }, + new ColumnDefinition { Width = 100 } + }, + Children = { changerLabel, picker } + }; + + Grid.SetColumn(changerLabel, 0); + Grid.SetColumn(picker, 1); + + return layout; + } + + public static Layout CreateToolbarPlacementChanger(Page page) + { + Type enumType = typeof(ToolbarPlacement); + + return CreateChanger(enumType, + Enum.GetName(enumType, page.On<Windows>().GetToolbarPlacement()), + picker => + { + page.On<Windows>().SetToolbarPlacement((ToolbarPlacement)Enum.Parse(enumType, picker.Items[picker.SelectedIndex])); + }, "Select Toolbar Placement"); + } + + public static Layout CreateAddRemoveToolBarItemButtons(Page page) + { + var layout = new StackLayout { Orientation = StackOrientation.Vertical, HorizontalOptions = LayoutOptions.Center }; + layout.Children.Add(new Label { Text = "Toolbar Items:" }); + + var buttonLayout = new StackLayout + { + Orientation = StackOrientation.Horizontal, + HorizontalOptions = LayoutOptions.Center + }; + + layout.Children.Add(buttonLayout); + + var addPrimary = new Button { Text = "Add Primary", BackgroundColor = Color.Gray }; + var addSecondary = new Button { Text = "Add Secondary", BackgroundColor = Color.Gray }; + var remove = new Button { Text = "Remove", BackgroundColor = Color.Gray }; + + buttonLayout.Children.Add(addPrimary); + buttonLayout.Children.Add(addSecondary); + buttonLayout.Children.Add(remove); + + Action action = () => page.DisplayAlert(CommandBarActionTitle, CommandBarActionMessage, CommandBarActionDismiss); + + addPrimary.Clicked += (sender, args) => + { + int index = page.ToolbarItems.Count(item => item.Order == ToolbarItemOrder.Primary) + 1; + page.ToolbarItems.Add(new ToolbarItem($"Primary {index}", "coffee.png", action, ToolbarItemOrder.Primary)); + }; + + addSecondary.Clicked += (sender, args) => + { + int index = page.ToolbarItems.Count(item => item.Order == ToolbarItemOrder.Secondary) + 1; + page.ToolbarItems.Add(new ToolbarItem($"Secondary {index}", "coffee.png", action, ToolbarItemOrder.Secondary)); + }; + + remove.Clicked += (sender, args) => + { + if (page.ToolbarItems.Any()) + { + page.ToolbarItems.RemoveAt(0); + } + }; + + return layout; + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGallery.cs b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGallery.cs new file mode 100644 index 00000000..67465da1 --- /dev/null +++ b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGallery.cs @@ -0,0 +1,54 @@ +using Xamarin.Forms.Controls.GalleryPages.PlatformSpecificsGalleries; + +namespace Xamarin.Forms.Controls +{ + public class PlatformSpecificsGallery : ContentPage + { + Page _originalRoot; + + public PlatformSpecificsGallery() + { + var mdpWindowsButton = new Button { Text = "Master Detail Page (Windows)" }; + var npWindowsButton = new Button { Text = "Navigation Page (Windows)" }; + var tbWindowsButton = new Button { Text = "Tabbed Page (Windows)" }; + var navpageiOSButton = new Button() { Text = "Navigation Page (iOS)" }; + var viselemiOSButton = new Button() { Text = "Visual Element (iOS)" }; + var appAndroidButton = new Button() { Text = "Application (Android)" }; + + mdpWindowsButton.Clicked += (sender, args) => { SetRoot(new MasterDetailPageWindows(new Command(RestoreOriginal))); }; + npWindowsButton.Clicked += (sender, args) => { SetRoot(new NavigationPageWindows(new Command(RestoreOriginal))); }; + tbWindowsButton.Clicked += (sender, args) => { SetRoot(new TabbedPageWindows(new Command(RestoreOriginal))); }; + navpageiOSButton.Clicked += (sender, args) => { SetRoot(NavigationPageiOS.Create(new Command(RestoreOriginal))); }; + viselemiOSButton.Clicked += (sender, args) => { SetRoot(new VisualElementiOS(new Command(RestoreOriginal))); }; + appAndroidButton.Clicked += (sender, args) => { SetRoot(new ApplicationAndroid(new Command(RestoreOriginal))); }; + + Content = new StackLayout + { + Children = { mdpWindowsButton, npWindowsButton, tbWindowsButton, navpageiOSButton, viselemiOSButton, appAndroidButton } + }; + } + + void SetRoot(Page page) + { + var app = Application.Current as App; + if (app == null) + { + return; + } + + _originalRoot = app.MainPage; + app.SetMainPage(page); + } + + void RestoreOriginal() + { + if (_originalRoot == null) + { + return; + } + + var app = Application.Current as App; + app?.SetMainPage(_originalRoot); + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj b/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj index ade7cd16..825d157d 100644 --- a/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj +++ b/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj @@ -99,8 +99,16 @@ <DependentUpon>ControlTemplateXamlPage.xaml</DependentUpon> </Compile> <Compile Include="GalleryPages\LayoutPerformanceGallery.cs" /> + <Compile Include="GalleryPages\PlatformSpecificsGalleries\MasterDetailPageWindows.cs" /> <Compile Include="GalleryPages\NavigationPropertiesGallery.cs" /> <Compile Include="ControlGalleryPages\ListViewSelectionColor.cs" /> + <Compile Include="GalleryPages\PlatformSpecificsGalleries\NavigationPageiOS.cs" /> + <Compile Include="GalleryPages\PlatformSpecificsGalleries\NavigationPageWindows.cs" /> + <Compile Include="GalleryPages\PlatformSpecificsGalleries\ApplicationAndroid.cs" /> + <Compile Include="GalleryPages\PlatformSpecificsGalleries\TabbedPageWindows.cs" /> + <Compile Include="GalleryPages\PlatformSpecificsGalleries\VisualElementiOS.cs" /> + <Compile Include="GalleryPages\PlatformSpecificsGalleries\WindowsPlatformSpecificsGalleryHelpers.cs" /> + <Compile Include="GalleryPages\PlatformSpecificsGallery.cs" /> <Compile Include="LegacyRepro\Page1.xaml.cs"> <DependentUpon>Page1.xaml</DependentUpon> </Compile> diff --git a/Xamarin.Forms.Core.UnitTests/PlatformSpecificsTests.cs b/Xamarin.Forms.Core.UnitTests/PlatformSpecificsTests.cs new file mode 100644 index 00000000..44a2a3b0 --- /dev/null +++ b/Xamarin.Forms.Core.UnitTests/PlatformSpecificsTests.cs @@ -0,0 +1,227 @@ +using NUnit.Framework; +using ImAVendor.Forms.PlatformConfiguration.iOS; +using Xamarin.Forms.PlatformConfiguration; +using Xamarin.Forms.PlatformConfiguration.AndroidSpecific; +using Xamarin.Forms.PlatformConfiguration.iOSSpecific; + +namespace Xamarin.Forms.Core.UnitTests +{ + [TestFixture] + public class PlatformSpecificsTests + { + [Test] + public void VendorPlatformProperty() + { + var x = new MasterDetailPage(); + + Assert.IsTrue(x.On<iOS>().GetVendorFoo()); + + x.On<iOS>().SetVendorFoo(false); + + Assert.IsFalse(x.On<iOS>().GetVendorFoo()); + } + + [Test] + public void ConsumeVendorSetting() + { + var x = new MasterDetailPage(); + x.On<iOS>().SetVendorFoo(false); + + Assert.IsFalse(x.On<iOS>().GetVendorFoo()); + } + + [Test] + public void Properties() + { + var x = new MasterDetailPage(); + x.On<Android>().SetSomeAndroidThing(42); + + Assert.IsTrue(x.On<Android>().GetSomeAndroidThing() == 42); + } + + [Test] + public void ConvenienceConfiguration() + { + var x = new MasterDetailPage(); + + x.On<Android>().UseTabletDefaults(); + + Assert.IsTrue(x.On<Android>().GetSomeAndroidThing() == 10); + Assert.IsTrue(x.On<Android>().GetSomeOtherAndroidThing() == 45); + + x.On<Android>().UsePhabletDefaults(); + + Assert.IsTrue(x.On<Android>().GetSomeAndroidThing() == 8); + Assert.IsTrue(x.On<Android>().GetSomeOtherAndroidThing() == 40); + } + + [Test] + public void NavigationPageiOSConfiguration() + { + var x = new NavigationPage(); + + x.On<iOS>().SetIsNavigationBarTranslucent(true); + + Assert.IsTrue(x.On<iOS>().IsNavigationBarTranslucent()); + } + } +} + +namespace ImAVendor.Forms.PlatformConfiguration.iOS +{ + using Xamarin.Forms; + using Xamarin.Forms.PlatformConfiguration; + using FormsElement = Xamarin.Forms.MasterDetailPage; + + public static class MasterDetailPage + { + public static readonly BindableProperty FooProperty = + BindableProperty.Create("VendorFoo", typeof(bool), + typeof(MasterDetailPage), true); + + public static void SetVendorFoo(BindableObject element, bool value) + { + element.SetValue(FooProperty, value); + } + + public static bool GetVendorFoo(BindableObject element) + { + return (bool)element.GetValue(FooProperty); + } + + public static IPlatformElementConfiguration<iOS, FormsElement> SetVendorFoo(this IPlatformElementConfiguration<iOS, FormsElement> config, bool value) + { + SetVendorFoo(config.Element, value); + return config; + } + + public static bool GetVendorFoo(this IPlatformElementConfiguration<iOS, FormsElement> mdp) + { + return GetVendorFoo(mdp.Element); + } + } +} + +namespace ImAVendor.Forms.PlatformConfiguration.iOS +{ + using Xamarin.Forms; + using Xamarin.Forms.PlatformConfiguration; + using FormsElement = Xamarin.Forms.NavigationPage; + + public static class NavigationPage + { + const string NavBarTranslucentEffectName = "XamControl.NavigationPageTranslucentEffect"; + + public static readonly BindableProperty IsNavigationBarTranslucentProperty = + BindableProperty.CreateAttached("IsNavigationBarTranslucent", typeof(bool), + typeof(NavigationPage), false, propertyChanging: IsNavigationBarTranslucentPropertyChanging); + + public static bool GetIsNavigationBarTranslucent(BindableObject element) + { + return (bool)element.GetValue(IsNavigationBarTranslucentProperty); + } + + public static void SetIsNavigationBarTranslucent(BindableObject element, bool value) + { + element.SetValue(IsNavigationBarTranslucentProperty, value); + } + + public static bool IsNavigationBarTranslucentVendor(this IPlatformElementConfiguration<iOS, FormsElement> config) + { + return GetIsNavigationBarTranslucent(config.Element); + } + + public static IPlatformElementConfiguration<iOS, FormsElement> EnableTranslucentNavigationBarVendor(this IPlatformElementConfiguration<iOS, FormsElement> config, bool value) + { + SetIsNavigationBarTranslucent(config.Element, value); + return config; + } + + static void IsNavigationBarTranslucentPropertyChanging(BindableObject bindable, object oldValue, object newValue) + { + AttachEffect(bindable as FormsElement); + } + + static void AttachEffect(FormsElement element) + { + IElementController controller = element; + if (controller == null || controller.EffectIsAttached(NavBarTranslucentEffectName)) + return; + + element.Effects.Add(Effect.Resolve(NavBarTranslucentEffectName)); + } + } +} + +namespace Xamarin.Forms.PlatformConfiguration.AndroidSpecific +{ + using FormsElement = Xamarin.Forms.MasterDetailPage; + + public static class MasterDetailPage + { + public static readonly BindableProperty SomeAndroidThingProperty = + BindableProperty.Create("SomeAndroidThing", typeof(int), + typeof(MasterDetailPage), 1); + + public static readonly BindableProperty SomeOtherAndroidThingProperty = + BindableProperty.Create("SomeOtherAndroidThing", typeof(int), + typeof(MasterDetailPage), 1); + + public static int GetSomeAndroidThing(BindableObject element) + { + return (int)element.GetValue(SomeAndroidThingProperty); + } + + public static void SetSomeAndroidThing(BindableObject element, int value) + { + element.SetValue(SomeAndroidThingProperty, value); + } + + public static int GetSomeOtherAndroidThing(BindableObject element) + { + return (int)element.GetValue(SomeOtherAndroidThingProperty); + } + + public static void SetSomeOtherAndroidThing(BindableObject element, int value) + { + element.SetValue(SomeOtherAndroidThingProperty, value); + } + + public static int GetSomeAndroidThing(this IPlatformElementConfiguration<Android, FormsElement> config) + { + return (int)config.Element.GetValue(SomeAndroidThingProperty); + } + + public static IPlatformElementConfiguration<Android, FormsElement> SetSomeAndroidThing(this IPlatformElementConfiguration<Android, FormsElement> config, + int value) + { + config.Element.SetValue(SomeAndroidThingProperty, value); + return config; + } + + public static int GetSomeOtherAndroidThing(this IPlatformElementConfiguration<Android, FormsElement> config) + { + return (int)config.Element.GetValue(SomeOtherAndroidThingProperty); + } + + public static IPlatformElementConfiguration<Android, FormsElement> SetSomeOtherAndroidThing(this IPlatformElementConfiguration<Android, FormsElement> config, int value) + { + config.Element.SetValue(SomeOtherAndroidThingProperty, value); + return config; + } + + public static IPlatformElementConfiguration<Android, FormsElement> UseTabletDefaults(this IPlatformElementConfiguration<Android, FormsElement> config) + { + config.SetSomeAndroidThing(10); + config.SetSomeOtherAndroidThing(45); + return config; + } + + public static IPlatformElementConfiguration<Android, FormsElement> UsePhabletDefaults(this IPlatformElementConfiguration<Android, FormsElement> config) + { + config.SetSomeAndroidThing(8); + config.SetSomeOtherAndroidThing(40); + return config; + } + } +} diff --git a/Xamarin.Forms.Core.UnitTests/Xamarin.Forms.Core.UnitTests.csproj b/Xamarin.Forms.Core.UnitTests/Xamarin.Forms.Core.UnitTests.csproj index 4eae5d53..74544605 100644 --- a/Xamarin.Forms.Core.UnitTests/Xamarin.Forms.Core.UnitTests.csproj +++ b/Xamarin.Forms.Core.UnitTests/Xamarin.Forms.Core.UnitTests.csproj @@ -122,6 +122,7 @@ <Compile Include="PageTests.cs" /> <Compile Include="PanGestureRecognizerUnitTests.cs" /> <Compile Include="PinTests.cs" /> + <Compile Include="PlatformSpecificsTests.cs" /> <Compile Include="PointTests.cs" /> <Compile Include="PositionTests.cs" /> <Compile Include="ProgressBarTests.cs" /> diff --git a/Xamarin.Forms.Core/ActivityIndicator.cs b/Xamarin.Forms.Core/ActivityIndicator.cs index 3689609a..f0b98887 100644 --- a/Xamarin.Forms.Core/ActivityIndicator.cs +++ b/Xamarin.Forms.Core/ActivityIndicator.cs @@ -1,14 +1,22 @@ +using System; using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_ActivityIndicatorRenderer))] - public class ActivityIndicator : View + public class ActivityIndicator : View, IElementConfiguration<ActivityIndicator> { public static readonly BindableProperty IsRunningProperty = BindableProperty.Create("IsRunning", typeof(bool), typeof(ActivityIndicator), default(bool)); public static readonly BindableProperty ColorProperty = BindableProperty.Create("Color", typeof(Color), typeof(ActivityIndicator), Color.Default); + readonly Lazy<PlatformConfigurationRegistry<ActivityIndicator>> _platformConfigurationRegistry; + + public ActivityIndicator() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<ActivityIndicator>>(() => new PlatformConfigurationRegistry<ActivityIndicator>(this)); + } + public Color Color { get { return (Color)GetValue(ColorProperty); } @@ -20,5 +28,9 @@ namespace Xamarin.Forms get { return (bool)GetValue(IsRunningProperty); } set { SetValue(IsRunningProperty, value); } } + public IPlatformElementConfiguration<T, ActivityIndicator> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/Application.cs b/Xamarin.Forms.Core/Application.cs index 4b5a91af..c6943817 100644 --- a/Xamarin.Forms.Core/Application.cs +++ b/Xamarin.Forms.Core/Application.cs @@ -6,10 +6,11 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { - public class Application : Element, IResourcesProvider, IApplicationController + public class Application : Element, IResourcesProvider, IApplicationController, IElementConfiguration<Application> { static Application s_current; readonly Task<IDictionary<string, object>> _propertiesTask; + readonly Lazy<PlatformConfigurationRegistry<Application>> _platformConfigurationRegistry; IAppIndexingProvider _appIndexProvider; bool _isSaving; @@ -32,6 +33,7 @@ namespace Xamarin.Forms SystemResources = DependencyService.Get<ISystemResourcesProvider>().GetSystemResources(); SystemResources.ValuesChanged += OnParentResourcesChanged; + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<Application>>(() => new PlatformConfigurationRegistry<Application>(this)); } public IAppLinks AppLinks @@ -146,6 +148,11 @@ namespace Xamarin.Forms await SetPropertiesAsync(); } + public IPlatformElementConfiguration<T, Application> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } + protected virtual void OnAppLinkRequestReceived(Uri uri) { } diff --git a/Xamarin.Forms.Core/BoxView.cs b/Xamarin.Forms.Core/BoxView.cs index 79fef390..9a7a4f77 100644 --- a/Xamarin.Forms.Core/BoxView.cs +++ b/Xamarin.Forms.Core/BoxView.cs @@ -4,16 +4,28 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_BoxViewRenderer))] - public class BoxView : View + public class BoxView : View, IElementConfiguration<BoxView> { public static readonly BindableProperty ColorProperty = BindableProperty.Create("Color", typeof(Color), typeof(BoxView), Color.Default); + readonly Lazy<PlatformConfigurationRegistry<BoxView>> _platformConfigurationRegistry; + + public BoxView() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<BoxView>>(() => new PlatformConfigurationRegistry<BoxView>(this)); + } + public Color Color { get { return (Color)GetValue(ColorProperty); } set { SetValue(ColorProperty, value); } } + public IPlatformElementConfiguration<T, BoxView> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } + [Obsolete("Use OnMeasure")] protected override SizeRequest OnSizeRequest(double widthConstraint, double heightConstraint) { diff --git a/Xamarin.Forms.Core/Button.cs b/Xamarin.Forms.Core/Button.cs index 72f98814..31573076 100644 --- a/Xamarin.Forms.Core/Button.cs +++ b/Xamarin.Forms.Core/Button.cs @@ -8,7 +8,7 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_ButtonRenderer))] - public class Button : View, IFontElement, IButtonController + public class Button : View, IFontElement, IButtonController, IElementConfiguration<Button> { public static readonly BindableProperty CommandProperty = BindableProperty.Create("Command", typeof(ICommand), typeof(Button), null, propertyChanged: (bo, o, n) => ((Button)bo).OnCommandChanged()); @@ -43,6 +43,8 @@ namespace Xamarin.Forms propertyChanging: (bindable, oldvalue, newvalue) => ((Button)bindable).OnSourcePropertyChanging((ImageSource)oldvalue, (ImageSource)newvalue), propertyChanged: (bindable, oldvalue, newvalue) => ((Button)bindable).OnSourcePropertyChanged((ImageSource)oldvalue, (ImageSource)newvalue)); + readonly Lazy<PlatformConfigurationRegistry<Button>> _platformConfigurationRegistry; + bool _cancelEvents; const double DefaultSpacing = 10; @@ -144,6 +146,16 @@ namespace Xamarin.Forms public event EventHandler Clicked; + public Button() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<Button>>(() => new PlatformConfigurationRegistry<Button>(this)); + } + + public IPlatformElementConfiguration<T, Button> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } + protected override void OnBindingContextChanged() { FileImageSource image = Image; diff --git a/Xamarin.Forms.Core/CarouselPage.cs b/Xamarin.Forms.Core/CarouselPage.cs index a6f769e5..b7d494cb 100644 --- a/Xamarin.Forms.Core/CarouselPage.cs +++ b/Xamarin.Forms.Core/CarouselPage.cs @@ -1,10 +1,23 @@ +using System; using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_CarouselPageRenderer))] - public class CarouselPage : MultiPage<ContentPage> + public class CarouselPage : MultiPage<ContentPage>, IElementConfiguration<CarouselPage> { + readonly Lazy<PlatformConfigurationRegistry<CarouselPage>> _platformConfigurationRegistry; + + public CarouselPage() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<CarouselPage>>(() => new PlatformConfigurationRegistry<CarouselPage>(this)); + } + + public new IPlatformElementConfiguration<T, CarouselPage> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } + protected override ContentPage CreateDefault(object item) { var page = new ContentPage(); diff --git a/Xamarin.Forms.Core/Configuration.cs b/Xamarin.Forms.Core/Configuration.cs new file mode 100644 index 00000000..0e00d942 --- /dev/null +++ b/Xamarin.Forms.Core/Configuration.cs @@ -0,0 +1,21 @@ + +namespace Xamarin.Forms +{ + public class Configuration<TPlatform, TElement> : IPlatformElementConfiguration<TPlatform, TElement> + where TPlatform : IConfigPlatform + where TElement : Element + + { + public Configuration(TElement element) + { + Element = element; + } + + public TElement Element { get; } + + public static Configuration<TPlatform, TElement> Create(TElement element) + { + return new Configuration<TPlatform, TElement>(element); + } + } +} diff --git a/Xamarin.Forms.Core/DatePicker.cs b/Xamarin.Forms.Core/DatePicker.cs index 20eecae4..9ef7a7eb 100644 --- a/Xamarin.Forms.Core/DatePicker.cs +++ b/Xamarin.Forms.Core/DatePicker.cs @@ -4,7 +4,7 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_DatePickerRenderer))] - public class DatePicker : View + public class DatePicker : View, IElementConfiguration<DatePicker> { public static readonly BindableProperty FormatProperty = BindableProperty.Create(nameof(Format), typeof(string), typeof(DatePicker), "d"); @@ -19,6 +19,13 @@ namespace Xamarin.Forms public static readonly BindableProperty TextColorProperty = BindableProperty.Create(nameof(TextColor), typeof(Color), typeof(DatePicker), Color.Default); + readonly Lazy<PlatformConfigurationRegistry<DatePicker>> _platformConfigurationRegistry; + + public DatePicker() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<DatePicker>>(() => new PlatformConfigurationRegistry<DatePicker>(this)); + } + public DateTime Date { get { return (DateTime)GetValue(DateProperty); } @@ -103,5 +110,10 @@ namespace Xamarin.Forms { return (DateTime)value <= ((DatePicker)bindable).MaximumDate; } + + public IPlatformElementConfiguration<T, DatePicker> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/Editor.cs b/Xamarin.Forms.Core/Editor.cs index 949c0865..26c6fd4c 100644 --- a/Xamarin.Forms.Core/Editor.cs +++ b/Xamarin.Forms.Core/Editor.cs @@ -4,7 +4,7 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_EditorRenderer))] - public class Editor : InputView, IFontElement + public class Editor : InputView, IFontElement, IElementConfiguration<Editor> { public static readonly BindableProperty TextProperty = BindableProperty.Create("Text", typeof(string), typeof(Editor), null, BindingMode.TwoWay, propertyChanged: (bindable, oldValue, newValue) => { @@ -21,6 +21,7 @@ namespace Xamarin.Forms public static readonly BindableProperty FontAttributesProperty = BindableProperty.Create("FontAttributes", typeof(FontAttributes), typeof(Editor), FontAttributes.None); public static readonly BindableProperty TextColorProperty = BindableProperty.Create("TextColor", typeof(Color), typeof(Editor), Color.Default); + readonly Lazy<PlatformConfigurationRegistry<Editor>> _platformConfigurationRegistry; public string Text { @@ -57,6 +58,16 @@ namespace Xamarin.Forms public event EventHandler<TextChangedEventArgs> TextChanged; + public Editor() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<Editor>>(() => new PlatformConfigurationRegistry<Editor>(this)); + } + + public IPlatformElementConfiguration<T, Editor> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } + internal void SendCompleted() { EventHandler handler = Completed; diff --git a/Xamarin.Forms.Core/Element.cs b/Xamarin.Forms.Core/Element.cs index 3bfa5cd6..19d7d855 100644 --- a/Xamarin.Forms.Core/Element.cs +++ b/Xamarin.Forms.Core/Element.cs @@ -254,6 +254,16 @@ namespace Xamarin.Forms SetValueCore(property, value); } + bool IElementController.EffectIsAttached(string name) + { + foreach (var effect in Effects) + { + if (effect.ResolveId == name) + return true; + } + return false; + } + object INameScope.FindByName(string name) { INameScope namescope = GetNameScope(); diff --git a/Xamarin.Forms.Core/Entry.cs b/Xamarin.Forms.Core/Entry.cs index 1ee2f856..ac16dc52 100644 --- a/Xamarin.Forms.Core/Entry.cs +++ b/Xamarin.Forms.Core/Entry.cs @@ -4,7 +4,7 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_EntryRenderer))] - public class Entry : InputView, IFontElement, IEntryController + public class Entry : InputView, IFontElement, IEntryController, IElementConfiguration<Entry> { public static readonly BindableProperty PlaceholderProperty = BindableProperty.Create("Placeholder", typeof(string), typeof(Entry), default(string)); @@ -25,6 +25,13 @@ namespace Xamarin.Forms public static readonly BindableProperty FontAttributesProperty = BindableProperty.Create("FontAttributes", typeof(FontAttributes), typeof(Entry), FontAttributes.None); + readonly Lazy<PlatformConfigurationRegistry<Entry>> _platformConfigurationRegistry; + + public Entry() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<Entry>>(() => new PlatformConfigurationRegistry<Entry>(this)); + } + public TextAlignment HorizontalTextAlignment { get { return (TextAlignment)GetValue(HorizontalTextAlignmentProperty); } @@ -95,5 +102,10 @@ namespace Xamarin.Forms entry.TextChanged?.Invoke(entry, new TextChangedEventArgs((string)oldValue, (string)newValue)); } + + public IPlatformElementConfiguration<T, Entry> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/Frame.cs b/Xamarin.Forms.Core/Frame.cs index 01f409e4..a298c0f0 100644 --- a/Xamarin.Forms.Core/Frame.cs +++ b/Xamarin.Forms.Core/Frame.cs @@ -1,18 +1,22 @@ +using System; using Xamarin.Forms.Platform; namespace Xamarin.Forms { [ContentProperty("Content")] [RenderWith(typeof(_FrameRenderer))] - public class Frame : ContentView + public class Frame : ContentView, IElementConfiguration<Frame> { public static readonly BindableProperty OutlineColorProperty = BindableProperty.Create("OutlineColor", typeof(Color), typeof(Frame), Color.Default); public static readonly BindableProperty HasShadowProperty = BindableProperty.Create("HasShadow", typeof(bool), typeof(Frame), true); + readonly Lazy<PlatformConfigurationRegistry<Frame>> _platformConfigurationRegistry; + public Frame() { Padding = new Size(20, 20); + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<Frame>>(() => new PlatformConfigurationRegistry<Frame>(this)); } public bool HasShadow @@ -26,5 +30,10 @@ namespace Xamarin.Forms get { return (Color)GetValue(OutlineColorProperty); } set { SetValue(OutlineColorProperty, value); } } + + public IPlatformElementConfiguration<T, Frame> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/IConfigElement.cs b/Xamarin.Forms.Core/IConfigElement.cs new file mode 100644 index 00000000..f1ce0b0b --- /dev/null +++ b/Xamarin.Forms.Core/IConfigElement.cs @@ -0,0 +1,8 @@ + +namespace Xamarin.Forms +{ + public interface IConfigElement<out T> where T : Element + { + T Element { get; } + } +} diff --git a/Xamarin.Forms.Core/IConfigPlatform.cs b/Xamarin.Forms.Core/IConfigPlatform.cs new file mode 100644 index 00000000..6f95a8f3 --- /dev/null +++ b/Xamarin.Forms.Core/IConfigPlatform.cs @@ -0,0 +1,5 @@ + +namespace Xamarin.Forms +{ + public interface IConfigPlatform { } +} diff --git a/Xamarin.Forms.Core/IElementConfiguration.cs b/Xamarin.Forms.Core/IElementConfiguration.cs new file mode 100644 index 00000000..2086fba7 --- /dev/null +++ b/Xamarin.Forms.Core/IElementConfiguration.cs @@ -0,0 +1,8 @@ + +namespace Xamarin.Forms +{ + public interface IElementConfiguration<out TElement> where TElement : Element + { + IPlatformElementConfiguration<T, TElement> On<T>() where T : IConfigPlatform; + } +} diff --git a/Xamarin.Forms.Core/IElementController.cs b/Xamarin.Forms.Core/IElementController.cs index 41f229c4..24713b0e 100644 --- a/Xamarin.Forms.Core/IElementController.cs +++ b/Xamarin.Forms.Core/IElementController.cs @@ -6,6 +6,8 @@ namespace Xamarin.Forms { IEffectControlProvider EffectControlProvider { get; set; } + bool EffectIsAttached(string name); + void SetValueFromRenderer(BindableProperty property, object value); void SetValueFromRenderer(BindablePropertyKey propertyKey, object value); ReadOnlyCollection<Element> LogicalChildren { get; } diff --git a/Xamarin.Forms.Core/IPlatformElementConfiguration.cs b/Xamarin.Forms.Core/IPlatformElementConfiguration.cs new file mode 100644 index 00000000..43083d34 --- /dev/null +++ b/Xamarin.Forms.Core/IPlatformElementConfiguration.cs @@ -0,0 +1,9 @@ + +namespace Xamarin.Forms +{ + public interface IPlatformElementConfiguration<out TPlatform, out TElement> : IConfigElement<TElement> + where TPlatform : IConfigPlatform + where TElement : Element + { + } +} diff --git a/Xamarin.Forms.Core/Image.cs b/Xamarin.Forms.Core/Image.cs index dd2692ad..5a9386c6 100644 --- a/Xamarin.Forms.Core/Image.cs +++ b/Xamarin.Forms.Core/Image.cs @@ -7,7 +7,7 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_ImageRenderer))] - public class Image : View, IImageController + public class Image : View, IImageController, IElementConfiguration<Image> { public static readonly BindableProperty SourceProperty = BindableProperty.Create("Source", typeof(ImageSource), typeof(Image), default(ImageSource), propertyChanging: OnSourcePropertyChanging, propertyChanged: OnSourcePropertyChanged); @@ -20,6 +20,13 @@ namespace Xamarin.Forms public static readonly BindableProperty IsLoadingProperty = IsLoadingPropertyKey.BindableProperty; + readonly Lazy<PlatformConfigurationRegistry<Image>> _platformConfigurationRegistry; + + public Image() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<Image>>(() => new PlatformConfigurationRegistry<Image>(this)); + } + public Aspect Aspect { get { return (Aspect)GetValue(AspectProperty); } @@ -157,5 +164,10 @@ namespace Xamarin.Forms { SetValue(IsLoadingPropertyKey, isLoading); } + + public IPlatformElementConfiguration<T, Image> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/Label.cs b/Xamarin.Forms.Core/Label.cs index a6390b2d..0634e080 100644 --- a/Xamarin.Forms.Core/Label.cs +++ b/Xamarin.Forms.Core/Label.cs @@ -7,17 +7,19 @@ namespace Xamarin.Forms { [ContentProperty("Text")] [RenderWith(typeof(_LabelRenderer))] - public class Label : View, IFontElement + public class Label : View, IFontElement, IElementConfiguration<Label> { public static readonly BindableProperty HorizontalTextAlignmentProperty = BindableProperty.Create("HorizontalTextAlignment", typeof(TextAlignment), typeof(Label), TextAlignment.Start, propertyChanged: OnHorizontalTextAlignmentPropertyChanged); - [Obsolete("XAlignProperty is obsolete. Please use HorizontalTextAlignmentProperty instead.")] public static readonly BindableProperty XAlignProperty = HorizontalTextAlignmentProperty; + [Obsolete("XAlignProperty is obsolete. Please use HorizontalTextAlignmentProperty instead.")] + public static readonly BindableProperty XAlignProperty = HorizontalTextAlignmentProperty; public static readonly BindableProperty VerticalTextAlignmentProperty = BindableProperty.Create("VerticalTextAlignment", typeof(TextAlignment), typeof(Label), TextAlignment.Start, propertyChanged: OnVerticalTextAlignmentPropertyChanged); - [Obsolete("YAlignProperty is obsolete. Please use VerticalTextAlignmentProperty instead.")] public static readonly BindableProperty YAlignProperty = VerticalTextAlignmentProperty; + [Obsolete("YAlignProperty is obsolete. Please use VerticalTextAlignmentProperty instead.")] + public static readonly BindableProperty YAlignProperty = VerticalTextAlignmentProperty; public static readonly BindableProperty TextColorProperty = BindableProperty.Create("TextColor", typeof(Color), typeof(Label), Color.Default); @@ -50,6 +52,13 @@ namespace Xamarin.Forms public static readonly BindableProperty LineBreakModeProperty = BindableProperty.Create("LineBreakMode", typeof(LineBreakMode), typeof(Label), LineBreakMode.WordWrap, propertyChanged: (bindable, oldvalue, newvalue) => ((Label)bindable).InvalidateMeasureInternal(InvalidationTrigger.MeasureChanged)); + readonly Lazy<PlatformConfigurationRegistry<Label>> _platformConfigurationRegistry; + + public Label() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<Label>>(() => new PlatformConfigurationRegistry<Label>(this)); + } + bool _cancelEvents; [Obsolete("Please use the Font attributes which are on the class itself. Obsoleted in v1.3.0")] @@ -284,5 +293,10 @@ namespace Xamarin.Forms label.OnPropertyChanged(nameof(YAlign)); #pragma warning restore 0618 } + + public IPlatformElementConfiguration<T, Label> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/ListView.cs b/Xamarin.Forms.Core/ListView.cs index deebda7f..fa9f738e 100644 --- a/Xamarin.Forms.Core/ListView.cs +++ b/Xamarin.Forms.Core/ListView.cs @@ -8,7 +8,7 @@ using Xamarin.Forms.Internals; namespace Xamarin.Forms { [RenderWith(typeof(_ListViewRenderer))] - public class ListView : ItemsView<Cell>, IListViewController + public class ListView : ItemsView<Cell>, IListViewController, IElementConfiguration<ListView> { public static readonly BindableProperty IsPullToRefreshEnabledProperty = BindableProperty.Create("IsPullToRefreshEnabled", typeof(bool), typeof(ListView), false); @@ -43,6 +43,8 @@ namespace Xamarin.Forms public static readonly BindableProperty SeparatorColorProperty = BindableProperty.Create("SeparatorColor", typeof(Color), typeof(ListView), Color.Default); + readonly Lazy<PlatformConfigurationRegistry<ListView>> _platformConfigurationRegistry; + BindingBase _groupDisplayBinding; BindingBase _groupShortNameBinding; @@ -64,6 +66,7 @@ namespace Xamarin.Forms TemplatedItems.IsGroupingEnabledProperty = IsGroupingEnabledProperty; TemplatedItems.GroupHeaderTemplateProperty = GroupHeaderTemplateProperty; + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<ListView>>(() => new PlatformConfigurationRegistry<ListView>(this)); } public ListView([Parameter("CachingStrategy")] ListViewCachingStrategy cachingStrategy) : this() @@ -573,5 +576,10 @@ namespace Xamarin.Forms var template = (DataTemplate)value; return template.CreateContent() is View; } + + public IPlatformElementConfiguration<T, ListView> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/MasterDetailPage.cs b/Xamarin.Forms.Core/MasterDetailPage.cs index 61cc42db..2ab08e98 100644 --- a/Xamarin.Forms.Core/MasterDetailPage.cs +++ b/Xamarin.Forms.Core/MasterDetailPage.cs @@ -1,10 +1,11 @@ using System; +using System.Collections.Generic; using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_MasterDetailPageRenderer))] - public class MasterDetailPage : Page, IMasterDetailPageController + public class MasterDetailPage : Page, IMasterDetailPageController, IElementConfiguration<MasterDetailPage> { public static readonly BindableProperty IsGestureEnabledProperty = BindableProperty.Create("IsGestureEnabled", typeof(bool), typeof(MasterDetailPage), true); @@ -237,5 +238,17 @@ namespace Xamarin.Forms var page = (MasterDetailPage)sender; UpdateMasterBehavior(page); } + + public MasterDetailPage() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<MasterDetailPage>>(() => new PlatformConfigurationRegistry<MasterDetailPage>(this)); + } + + readonly Lazy<PlatformConfigurationRegistry<MasterDetailPage>> _platformConfigurationRegistry; + + public new IPlatformElementConfiguration<T, MasterDetailPage> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/NavigationMenu.cs b/Xamarin.Forms.Core/NavigationMenu.cs index 2386dd29..2283bd51 100644 --- a/Xamarin.Forms.Core/NavigationMenu.cs +++ b/Xamarin.Forms.Core/NavigationMenu.cs @@ -7,10 +7,17 @@ namespace Xamarin.Forms { // Mark as internal until renderers are ready for release after 1.0 [RenderWith(typeof(_NavigationMenuRenderer))] - internal class NavigationMenu : View + internal class NavigationMenu : View, IElementConfiguration<NavigationMenu> { readonly List<Page> _targets = new List<Page>(); + readonly Lazy<PlatformConfigurationRegistry<NavigationMenu>> _platformConfigurationRegistry; + + public NavigationMenu() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<NavigationMenu>>(() => new PlatformConfigurationRegistry<NavigationMenu>(this)); + } + public IEnumerable<Page> Targets { get { return _targets; } @@ -52,6 +59,11 @@ namespace Xamarin.Forms } } + public IPlatformElementConfiguration<T, NavigationMenu> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } + internal void SendTargetSelected(Page target) { TargetSelected(target); diff --git a/Xamarin.Forms.Core/NavigationPage.cs b/Xamarin.Forms.Core/NavigationPage.cs index d7fb5f3e..7b393b9c 100644 --- a/Xamarin.Forms.Core/NavigationPage.cs +++ b/Xamarin.Forms.Core/NavigationPage.cs @@ -8,7 +8,7 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_NavigationPageRenderer))] - public class NavigationPage : Page, IPageContainer<Page>, INavigationPageController + public class NavigationPage : Page, IPageContainer<Page>, INavigationPageController, IElementConfiguration<NavigationPage> { public static readonly BindableProperty BackButtonTitleProperty = BindableProperty.CreateAttached("BackButtonTitle", typeof(string), typeof(Page), null); @@ -27,9 +27,11 @@ namespace Xamarin.Forms static readonly BindablePropertyKey CurrentPagePropertyKey = BindableProperty.CreateReadOnly("CurrentPage", typeof(Page), typeof(NavigationPage), null); public static readonly BindableProperty CurrentPageProperty = CurrentPagePropertyKey.BindableProperty; - + public NavigationPage() { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<NavigationPage>>(() => new PlatformConfigurationRegistry<NavigationPage>(this)); + Navigation = new NavigationImpl(this); } @@ -441,5 +443,12 @@ namespace Xamarin.Forms Owner.RemovePage(page); } } + + readonly Lazy<PlatformConfigurationRegistry<NavigationPage>> _platformConfigurationRegistry; + + public new IPlatformElementConfiguration<T, NavigationPage> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/OpenGLView.cs b/Xamarin.Forms.Core/OpenGLView.cs index 530a2f0d..39e49a90 100644 --- a/Xamarin.Forms.Core/OpenGLView.cs +++ b/Xamarin.Forms.Core/OpenGLView.cs @@ -4,12 +4,14 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_OpenGLViewRenderer))] - public sealed class OpenGLView : View, IOpenGlViewController + public sealed class OpenGLView : View, IOpenGlViewController, IElementConfiguration<OpenGLView> { #region Statics public static readonly BindableProperty HasRenderLoopProperty = BindableProperty.Create("HasRenderLoop", typeof(bool), typeof(OpenGLView), default(bool)); + readonly Lazy<PlatformConfigurationRegistry<OpenGLView>> _platformConfigurationRegistry; + #endregion public bool HasRenderLoop @@ -34,5 +36,15 @@ namespace Xamarin.Forms } event EventHandler DisplayRequested; + + public OpenGLView() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<OpenGLView>>(() => new PlatformConfigurationRegistry<OpenGLView>(this)); + } + + public IPlatformElementConfiguration<T, OpenGLView> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/Page.cs b/Xamarin.Forms.Core/Page.cs index 7c21a3b9..87b54bd3 100644 --- a/Xamarin.Forms.Core/Page.cs +++ b/Xamarin.Forms.Core/Page.cs @@ -11,7 +11,7 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_PageRenderer))] - public class Page : VisualElement, ILayout, IPageController + public class Page : VisualElement, ILayout, IPageController, IElementConfiguration<Page> { public const string BusySetSignalName = "Xamarin.BusySet"; @@ -35,6 +35,8 @@ namespace Xamarin.Forms public static readonly BindableProperty IconProperty = BindableProperty.Create("Icon", typeof(FileImageSource), typeof(Page), default(FileImageSource)); + readonly Lazy<PlatformConfigurationRegistry<Page>> _platformConfigurationRegistry; + bool _allocatedFlag; Rectangle _containerArea; @@ -53,6 +55,7 @@ namespace Xamarin.Forms toolbarItems.CollectionChanged += OnToolbarItemsCollectionChanged; ToolbarItems = toolbarItems; PageController.InternalChildren.CollectionChanged += InternalChildrenOnCollectionChanged; + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<Page>>(() => new PlatformConfigurationRegistry<Page>(this)); } public string BackgroundImage @@ -401,5 +404,10 @@ namespace Xamarin.Forms } return !any; } + + public IPlatformElementConfiguration<T, Page> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/Picker.cs b/Xamarin.Forms.Core/Picker.cs index 5c2fb72b..d5f60e9d 100644 --- a/Xamarin.Forms.Core/Picker.cs +++ b/Xamarin.Forms.Core/Picker.cs @@ -6,7 +6,7 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_PickerRenderer))] - public class Picker : View + public class Picker : View, IElementConfiguration<Picker> { public static readonly BindableProperty TextColorProperty = BindableProperty.Create(nameof(TextColor), typeof(Color), typeof(Picker), Color.Default); @@ -20,10 +20,13 @@ namespace Xamarin.Forms eh(bindable, EventArgs.Empty); }, coerceValue: CoerceSelectedIndex); + readonly Lazy<PlatformConfigurationRegistry<Picker>> _platformConfigurationRegistry; + public Picker() { Items = new ObservableList<string>(); ((ObservableList<string>)Items).CollectionChanged += OnItemsCollectionChanged; + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<Picker>>(() => new PlatformConfigurationRegistry<Picker>(this)); } public IList<string> Items { get; } @@ -58,5 +61,10 @@ namespace Xamarin.Forms { SelectedIndex = SelectedIndex.Clamp(-1, Items.Count - 1); } + + public IPlatformElementConfiguration<T, Picker> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/PlatformConfiguration/AndroidSpecific/Application.cs b/Xamarin.Forms.Core/PlatformConfiguration/AndroidSpecific/Application.cs new file mode 100644 index 00000000..9366019f --- /dev/null +++ b/Xamarin.Forms.Core/PlatformConfiguration/AndroidSpecific/Application.cs @@ -0,0 +1,38 @@ +namespace Xamarin.Forms.PlatformConfiguration.AndroidSpecific +{ + using FormsElement = Forms.Application; + + public enum WindowSoftInputModeAdjust + { + Pan, + Resize + } + + public static class Application + { + public static readonly BindableProperty WindowSoftInputModeAdjustProperty = + BindableProperty.Create("WindowSoftInputModeAdjust", typeof(WindowSoftInputModeAdjust), + typeof(Application), WindowSoftInputModeAdjust.Pan); + + public static WindowSoftInputModeAdjust GetWindowSoftInputModeAdjust(BindableObject element) + { + return (WindowSoftInputModeAdjust)element.GetValue(WindowSoftInputModeAdjustProperty); + } + + public static void SetWindowSoftInputModeAdjust(BindableObject element, WindowSoftInputModeAdjust value) + { + element.SetValue(WindowSoftInputModeAdjustProperty, value); + } + + public static WindowSoftInputModeAdjust GetWindowSoftInputModeAdjust(this IPlatformElementConfiguration<Android, FormsElement> config) + { + return GetWindowSoftInputModeAdjust(config.Element); + } + + public static IPlatformElementConfiguration<Android, FormsElement> UseWindowSoftInputModeAdjust(this IPlatformElementConfiguration<Android, FormsElement> config, WindowSoftInputModeAdjust value) + { + SetWindowSoftInputModeAdjust(config.Element, value); + return config; + } + } +} diff --git a/Xamarin.Forms.Core/PlatformConfiguration/ExtensionPoints.cs b/Xamarin.Forms.Core/PlatformConfiguration/ExtensionPoints.cs new file mode 100644 index 00000000..341d9319 --- /dev/null +++ b/Xamarin.Forms.Core/PlatformConfiguration/ExtensionPoints.cs @@ -0,0 +1,7 @@ + +namespace Xamarin.Forms.PlatformConfiguration +{ + public sealed class Android : IConfigPlatform { } + public sealed class iOS : IConfigPlatform { } + public sealed class Windows : IConfigPlatform { } +} diff --git a/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/CollapseStyle.cs b/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/CollapseStyle.cs new file mode 100644 index 00000000..afd9b51d --- /dev/null +++ b/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/CollapseStyle.cs @@ -0,0 +1,9 @@ + +namespace Xamarin.Forms.PlatformConfiguration.WindowsSpecific +{ + public enum CollapseStyle + { + Full, + Partial + } +} diff --git a/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/MasterDetailPage.cs b/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/MasterDetailPage.cs new file mode 100644 index 00000000..abfaec4d --- /dev/null +++ b/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/MasterDetailPage.cs @@ -0,0 +1,76 @@ +using System; + +namespace Xamarin.Forms.PlatformConfiguration.WindowsSpecific +{ + using FormsElement = Forms.MasterDetailPage; + + public static class MasterDetailPage + { + #region CollapsedStyle + + public static readonly BindableProperty CollapseStyleProperty = + BindableProperty.CreateAttached("CollapseStyle", typeof(CollapseStyle), + typeof(MasterDetailPage), CollapseStyle.Full); + + public static CollapseStyle GetCollapseStyle(BindableObject element) + { + return (CollapseStyle)element.GetValue(CollapseStyleProperty); + } + + public static void SetCollapseStyle(BindableObject element, CollapseStyle collapseStyle) + { + element.SetValue(CollapseStyleProperty, collapseStyle); + } + + public static CollapseStyle GetCollapseStyle(this IPlatformElementConfiguration<Windows, FormsElement> config) + { + return (CollapseStyle)config.Element.GetValue(CollapseStyleProperty); + } + + public static IPlatformElementConfiguration<Windows, FormsElement> SetCollapseStyle( + this IPlatformElementConfiguration<Windows, FormsElement> config, CollapseStyle value) + { + config.Element.SetValue(CollapseStyleProperty, value); + return config; + } + + public static IPlatformElementConfiguration<Windows, FormsElement> UsePartialCollapse( + this IPlatformElementConfiguration<Windows, FormsElement> config) + { + SetCollapseStyle(config, CollapseStyle.Partial); + return config; + } + + #endregion + + #region CollapsedPaneWidth + + public static readonly BindableProperty CollapsedPaneWidthProperty = + BindableProperty.CreateAttached("CollapsedPaneWidth", typeof(double), + typeof(MasterDetailPage), 48d, validateValue: (bindable, value) => (double)value >= 0); + + public static double GetCollapsedPaneWidth(BindableObject element) + { + return (double)element.GetValue(CollapsedPaneWidthProperty); + } + + public static void SetCollapsedPaneWidth(BindableObject element, double collapsedPaneWidth) + { + element.SetValue(CollapsedPaneWidthProperty, collapsedPaneWidth); + } + + public static double CollapsedPaneWidth(this IPlatformElementConfiguration<Windows, FormsElement> config) + { + return (double)config.Element.GetValue(CollapsedPaneWidthProperty); + } + + public static IPlatformElementConfiguration<Windows, FormsElement> CollapsedPaneWidth( + this IPlatformElementConfiguration<Windows, FormsElement> config, double value) + { + config.Element.SetValue(CollapsedPaneWidthProperty, value); + return config; + } + + #endregion + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/Page.cs b/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/Page.cs new file mode 100644 index 00000000..59e53b5f --- /dev/null +++ b/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/Page.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Xamarin.Forms.PlatformConfiguration.WindowsSpecific +{ + using FormsElement = Forms.Page; + + public static class Page + { + #region ToolbarPlacement + + public static readonly BindableProperty ToolbarPlacementProperty = + BindableProperty.CreateAttached("ToolbarPlacement", typeof(ToolbarPlacement), + typeof(Page), ToolbarPlacement.Default); + + public static ToolbarPlacement GetToolbarPlacement(BindableObject element) + { + return (ToolbarPlacement)element.GetValue(ToolbarPlacementProperty); + } + + public static void SetToolbarPlacement(BindableObject element, ToolbarPlacement toolbarPlacement) + { + element.SetValue(ToolbarPlacementProperty, toolbarPlacement); + } + + public static ToolbarPlacement GetToolbarPlacement(this IPlatformElementConfiguration<Windows, FormsElement> config) + { + return (ToolbarPlacement)config.Element.GetValue(ToolbarPlacementProperty); + } + + public static IPlatformElementConfiguration<Windows, FormsElement> SetToolbarPlacement( + this IPlatformElementConfiguration<Windows, FormsElement> config, ToolbarPlacement value) + { + config.Element.SetValue(ToolbarPlacementProperty, value); + return config; + } + + #endregion + } +} diff --git a/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/ToolbarPlacement.cs b/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/ToolbarPlacement.cs new file mode 100644 index 00000000..60fbdc25 --- /dev/null +++ b/Xamarin.Forms.Core/PlatformConfiguration/WindowsSpecific/ToolbarPlacement.cs @@ -0,0 +1,23 @@ +namespace Xamarin.Forms.PlatformConfiguration.WindowsSpecific +{ + public enum ToolbarPlacement + { + /// <summary> + /// Default will place the Toolbar at the bottom of the screen on phones and + /// at the top of the screen on larger devices + /// </summary> + Default, + + /// <summary> + /// Always place the Toolbar at the top of the screen + /// </summary> + Top, + + /// <summary> + /// Always place the Toolbar at the bottom of the screen + /// </summary> + Bottom + } + + +}
\ No newline at end of file diff --git a/Xamarin.Forms.Core/PlatformConfiguration/iOSSpecific/BlurEffectStyle.cs b/Xamarin.Forms.Core/PlatformConfiguration/iOSSpecific/BlurEffectStyle.cs new file mode 100644 index 00000000..d6c46e26 --- /dev/null +++ b/Xamarin.Forms.Core/PlatformConfiguration/iOSSpecific/BlurEffectStyle.cs @@ -0,0 +1,20 @@ +namespace Xamarin.Forms.PlatformConfiguration.iOSSpecific +{ + + public enum BlurEffectStyle + { + None, + /// <summary> + /// Available in iOS 8.0 and later. + /// </summary> + ExtraLight, + /// <summary> + /// Available in iOS 8.0 and later. + /// </summary> + Light, + /// <summary> + /// Available in iOS 8.0 and later. + /// </summary> + Dark + } +} diff --git a/Xamarin.Forms.Core/PlatformConfiguration/iOSSpecific/NavigationPage.cs b/Xamarin.Forms.Core/PlatformConfiguration/iOSSpecific/NavigationPage.cs new file mode 100644 index 00000000..4ca5976a --- /dev/null +++ b/Xamarin.Forms.Core/PlatformConfiguration/iOSSpecific/NavigationPage.cs @@ -0,0 +1,45 @@ + +namespace Xamarin.Forms.PlatformConfiguration.iOSSpecific +{ + using FormsElement = Forms.NavigationPage; + + public static class NavigationPage + { + public static readonly BindableProperty IsNavigationBarTranslucentProperty = + BindableProperty.Create("IsNavigationBarTranslucent", typeof(bool), + typeof(NavigationPage), false); + + public static bool GetIsNavigationBarTranslucent(BindableObject element) + { + return (bool)element.GetValue(IsNavigationBarTranslucentProperty); + } + + public static void SetIsNavigationBarTranslucent(BindableObject element, bool value) + { + element.SetValue(IsNavigationBarTranslucentProperty, value); + } + + public static bool IsNavigationBarTranslucent(this IPlatformElementConfiguration<iOS, FormsElement> config) + { + return GetIsNavigationBarTranslucent(config.Element); + } + + public static IPlatformElementConfiguration<iOS, FormsElement> SetIsNavigationBarTranslucent(this IPlatformElementConfiguration<iOS, FormsElement> config, bool value) + { + SetIsNavigationBarTranslucent(config.Element, value); + return config; + } + + public static IPlatformElementConfiguration<iOS, FormsElement> EnableTranslucentNavigationBar(this IPlatformElementConfiguration<iOS, FormsElement> config) + { + SetIsNavigationBarTranslucent(config.Element, true); + return config; + } + + public static IPlatformElementConfiguration<iOS, FormsElement>DisableTranslucentNavigationBar(this IPlatformElementConfiguration<iOS, FormsElement> config) + { + SetIsNavigationBarTranslucent(config.Element, false); + return config; + } + } +} diff --git a/Xamarin.Forms.Core/PlatformConfiguration/iOSSpecific/VisualElement.cs b/Xamarin.Forms.Core/PlatformConfiguration/iOSSpecific/VisualElement.cs new file mode 100644 index 00000000..1b3760e9 --- /dev/null +++ b/Xamarin.Forms.Core/PlatformConfiguration/iOSSpecific/VisualElement.cs @@ -0,0 +1,33 @@ + +namespace Xamarin.Forms.PlatformConfiguration.iOSSpecific +{ + using FormsElement = Forms.VisualElement; + + public static class VisualElement + { + public static readonly BindableProperty BlurEffectProperty = + BindableProperty.Create("BlurEffect", typeof(BlurEffectStyle), + typeof(VisualElement), BlurEffectStyle.None); + + public static BlurEffectStyle GetBlurEffect(BindableObject element) + { + return (BlurEffectStyle)element.GetValue(BlurEffectProperty); + } + + public static void SetBlurEffect(BindableObject element, BlurEffectStyle value) + { + element.SetValue(BlurEffectProperty, value); + } + + public static BlurEffectStyle GetBlurEffect(this IPlatformElementConfiguration<iOS, FormsElement> config) + { + return GetBlurEffect(config.Element); + } + + public static IPlatformElementConfiguration<iOS, FormsElement> UseBlurEffect(this IPlatformElementConfiguration<iOS, FormsElement> config, BlurEffectStyle value) + { + SetBlurEffect(config.Element, value); + return config; + } + } +} diff --git a/Xamarin.Forms.Core/PlatformConfigurationRegistry.cs b/Xamarin.Forms.Core/PlatformConfigurationRegistry.cs new file mode 100644 index 00000000..dada7c6d --- /dev/null +++ b/Xamarin.Forms.Core/PlatformConfigurationRegistry.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; + +namespace Xamarin.Forms +{ + /// <summary> + /// Helper that handles storing and lookup of platform specifics implementations + /// </summary> + /// <typeparam name="TElement">The Element type</typeparam> + internal class PlatformConfigurationRegistry<TElement> : IElementConfiguration<TElement> + where TElement : Element + { + readonly TElement _element; + readonly Dictionary<Type, object> _platformSpecifics = new Dictionary<Type, object>(); + + internal PlatformConfigurationRegistry(TElement element) + { + _element = element; + } + + public IPlatformElementConfiguration<T, TElement> On<T>() where T : IConfigPlatform + { + if (_platformSpecifics.ContainsKey(typeof(T))) + { + return (IPlatformElementConfiguration<T, TElement>)_platformSpecifics[typeof(T)]; + } + + var emptyConfig = Configuration<T, TElement>.Create(_element); + + _platformSpecifics.Add(typeof(T), emptyConfig); + + return emptyConfig; + } + } +} diff --git a/Xamarin.Forms.Core/ProgressBar.cs b/Xamarin.Forms.Core/ProgressBar.cs index cd8addf6..323cc514 100644 --- a/Xamarin.Forms.Core/ProgressBar.cs +++ b/Xamarin.Forms.Core/ProgressBar.cs @@ -1,13 +1,21 @@ +using System; using System.Threading.Tasks; using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_ProgressBarRenderer))] - public class ProgressBar : View + public class ProgressBar : View, IElementConfiguration<ProgressBar> { public static readonly BindableProperty ProgressProperty = BindableProperty.Create("Progress", typeof(double), typeof(ProgressBar), 0d, coerceValue: (bo, v) => ((double)v).Clamp(0, 1)); + readonly Lazy<PlatformConfigurationRegistry<ProgressBar>> _platformConfigurationRegistry; + + public ProgressBar() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<ProgressBar>>(() => new PlatformConfigurationRegistry<ProgressBar>(this)); + } + public double Progress { get { return (double)GetValue(ProgressProperty); } @@ -22,5 +30,10 @@ namespace Xamarin.Forms return tcs.Task; } + + public IPlatformElementConfiguration<T, ProgressBar> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/ScrollView.cs b/Xamarin.Forms.Core/ScrollView.cs index 143d0a61..13ae6ad9 100644 --- a/Xamarin.Forms.Core/ScrollView.cs +++ b/Xamarin.Forms.Core/ScrollView.cs @@ -6,7 +6,7 @@ namespace Xamarin.Forms { [ContentProperty("Content")] [RenderWith(typeof(_ScrollViewRenderer))] - public class ScrollView : Layout, IScrollViewController + public class ScrollView : Layout, IScrollViewController, IElementConfiguration<ScrollView> { public static readonly BindableProperty OrientationProperty = BindableProperty.Create("Orientation", typeof(ScrollOrientation), typeof(ScrollView), ScrollOrientation.Vertical); @@ -22,6 +22,8 @@ namespace Xamarin.Forms public static readonly BindableProperty ContentSizeProperty = ContentSizePropertyKey.BindableProperty; + readonly Lazy<PlatformConfigurationRegistry<ScrollView>> _platformConfigurationRegistry; + View _content; TaskCompletionSource<bool> _scrollCompletionSource; @@ -68,6 +70,11 @@ namespace Xamarin.Forms private set { SetValue(ScrollYPropertyKey, value); } } + public ScrollView() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<ScrollView>>(() => new PlatformConfigurationRegistry<ScrollView>(this)); + } + Point IScrollViewController.GetScrollPositionForElement(VisualElement item, ScrollToPosition pos) { ScrollToPosition position = pos; @@ -133,6 +140,11 @@ namespace Xamarin.Forms public event EventHandler<ScrolledEventArgs> Scrolled; + public IPlatformElementConfiguration<T, ScrollView> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } + public Task ScrollToAsync(double x, double y, bool animated) { var args = new ScrollToRequestedEventArgs(x, y, animated); diff --git a/Xamarin.Forms.Core/SearchBar.cs b/Xamarin.Forms.Core/SearchBar.cs index 40bf2502..6e2a6c63 100644 --- a/Xamarin.Forms.Core/SearchBar.cs +++ b/Xamarin.Forms.Core/SearchBar.cs @@ -5,7 +5,7 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_SearchBarRenderer))] - public class SearchBar : View, IFontElement, ISearchBarController + public class SearchBar : View, IFontElement, ISearchBarController, IElementConfiguration<SearchBar> { public static readonly BindableProperty SearchCommandProperty = BindableProperty.Create("SearchCommand", typeof(ICommand), typeof(SearchBar), null, propertyChanged: OnCommandChanged); @@ -37,6 +37,8 @@ namespace Xamarin.Forms public static readonly BindableProperty PlaceholderColorProperty = BindableProperty.Create("PlaceholderColor", typeof(Color), typeof(SearchBar), Color.Default); + readonly Lazy<PlatformConfigurationRegistry<SearchBar>> _platformConfigurationRegistry; + public Color CancelButtonColor { get { return (Color)GetValue(CancelButtonColorProperty); } @@ -113,6 +115,11 @@ namespace Xamarin.Forms public event EventHandler<TextChangedEventArgs> TextChanged; + public SearchBar() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<SearchBar>>(() => new PlatformConfigurationRegistry<SearchBar>(this)); + } + void ISearchBarController.OnSearchButtonPressed() { ICommand cmd = SearchCommand; @@ -152,5 +159,10 @@ namespace Xamarin.Forms self.IsEnabledCore = true; } } + + public IPlatformElementConfiguration<T, SearchBar> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/Slider.cs b/Xamarin.Forms.Core/Slider.cs index 6363c410..5f5f5317 100644 --- a/Xamarin.Forms.Core/Slider.cs +++ b/Xamarin.Forms.Core/Slider.cs @@ -4,7 +4,7 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_SliderRenderer))] - public class Slider : View + public class Slider : View, IElementConfiguration<Slider> { public static readonly BindableProperty MinimumProperty = BindableProperty.Create("Minimum", typeof(double), typeof(Slider), 0d, validateValue: (bindable, value) => { @@ -40,11 +40,14 @@ namespace Xamarin.Forms eh(slider, new ValueChangedEventArgs((double)oldValue, (double)newValue)); }); + readonly Lazy<PlatformConfigurationRegistry<Slider>> _platformConfigurationRegistry; + public Slider() { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<Slider>>(() => new PlatformConfigurationRegistry<Slider>(this)); } - public Slider(double min, double max, double val) + public Slider(double min, double max, double val) : this() { if (min >= max) throw new ArgumentOutOfRangeException("min"); @@ -81,5 +84,10 @@ namespace Xamarin.Forms } public event EventHandler<ValueChangedEventArgs> ValueChanged; + + public IPlatformElementConfiguration<T, Slider> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/Stepper.cs b/Xamarin.Forms.Core/Stepper.cs index 2a3de841..f9742ccc 100644 --- a/Xamarin.Forms.Core/Stepper.cs +++ b/Xamarin.Forms.Core/Stepper.cs @@ -4,7 +4,7 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_StepperRenderer))] - public class Stepper : View + public class Stepper : View, IElementConfiguration<Stepper> { public static readonly BindableProperty MaximumProperty = BindableProperty.Create("Maximum", typeof(double), typeof(Stepper), 100.0, validateValue: (bindable, value) => { @@ -42,8 +42,11 @@ namespace Xamarin.Forms public static readonly BindableProperty IncrementProperty = BindableProperty.Create("Increment", typeof(double), typeof(Stepper), 1.0); + readonly Lazy<PlatformConfigurationRegistry<Stepper>> _platformConfigurationRegistry; + public Stepper() { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<Stepper>>(() => new PlatformConfigurationRegistry<Stepper>(this)); } public Stepper(double min, double max, double val, double increment) @@ -90,5 +93,10 @@ namespace Xamarin.Forms } public event EventHandler<ValueChangedEventArgs> ValueChanged; + + public IPlatformElementConfiguration<T, Stepper> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/Switch.cs b/Xamarin.Forms.Core/Switch.cs index 394e050a..73524b04 100644 --- a/Xamarin.Forms.Core/Switch.cs +++ b/Xamarin.Forms.Core/Switch.cs @@ -4,7 +4,7 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_SwitchRenderer))] - public class Switch : View + public class Switch : View, IElementConfiguration<Switch> { public static readonly BindableProperty IsToggledProperty = BindableProperty.Create("IsToggled", typeof(bool), typeof(Switch), false, propertyChanged: (bindable, oldValue, newValue) => { @@ -13,6 +13,13 @@ namespace Xamarin.Forms eh(bindable, new ToggledEventArgs((bool)newValue)); }, defaultBindingMode: BindingMode.TwoWay); + readonly Lazy<PlatformConfigurationRegistry<Switch>> _platformConfigurationRegistry; + + public Switch() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<Switch>>(() => new PlatformConfigurationRegistry<Switch>(this)); + } + public bool IsToggled { get { return (bool)GetValue(IsToggledProperty); } @@ -20,5 +27,10 @@ namespace Xamarin.Forms } public event EventHandler<ToggledEventArgs> Toggled; + + public IPlatformElementConfiguration<T, Switch> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/TabbedPage.cs b/Xamarin.Forms.Core/TabbedPage.cs index 5fb6bf9c..ee9b81ff 100644 --- a/Xamarin.Forms.Core/TabbedPage.cs +++ b/Xamarin.Forms.Core/TabbedPage.cs @@ -1,14 +1,17 @@ +using System; using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_TabbedPageRenderer))] - public class TabbedPage : MultiPage<Page> + public class TabbedPage : MultiPage<Page>, IElementConfiguration<TabbedPage> { public static readonly BindableProperty BarBackgroundColorProperty = BindableProperty.Create(nameof(BarBackgroundColor), typeof(Color), typeof(TabbedPage), Color.Default); public static readonly BindableProperty BarTextColorProperty = BindableProperty.Create(nameof(BarTextColor), typeof(Color), typeof(TabbedPage), Color.Default); + readonly Lazy<PlatformConfigurationRegistry<TabbedPage>> _platformConfigurationRegistry; + public Color BarBackgroundColor { get @@ -41,5 +44,15 @@ namespace Xamarin.Forms return page; } + + public TabbedPage() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<TabbedPage>>(() => new PlatformConfigurationRegistry<TabbedPage>(this)); + } + + public new IPlatformElementConfiguration<T, TabbedPage> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/TableView.cs b/Xamarin.Forms.Core/TableView.cs index bd9f964e..b6c66800 100644 --- a/Xamarin.Forms.Core/TableView.cs +++ b/Xamarin.Forms.Core/TableView.cs @@ -9,12 +9,14 @@ namespace Xamarin.Forms { [ContentProperty("Root")] [RenderWith(typeof(_TableViewRenderer))] - public class TableView : View, ITableViewController + public class TableView : View, ITableViewController, IElementConfiguration<TableView> { public static readonly BindableProperty RowHeightProperty = BindableProperty.Create("RowHeight", typeof(int), typeof(TableView), -1); public static readonly BindableProperty HasUnevenRowsProperty = BindableProperty.Create("HasUnevenRows", typeof(bool), typeof(TableView), false); + readonly Lazy<PlatformConfigurationRegistry<TableView>> _platformConfigurationRegistry; + readonly TableSectionModel _tableModel; TableIntent _intent = TableIntent.Data; @@ -29,6 +31,7 @@ namespace Xamarin.Forms { VerticalOptions = HorizontalOptions = LayoutOptions.FillAndExpand; Model = _tableModel = new TableSectionModel(this, root); + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<TableView>>(() => new PlatformConfigurationRegistry<TableView>(this)); } public bool HasUnevenRows @@ -127,6 +130,11 @@ namespace Xamarin.Forms remove { ModelChanged -= value; } } + public IPlatformElementConfiguration<T, TableView> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } + void CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { OnModelChanged(); diff --git a/Xamarin.Forms.Core/TimePicker.cs b/Xamarin.Forms.Core/TimePicker.cs index 0a33c2e3..a90b378e 100644 --- a/Xamarin.Forms.Core/TimePicker.cs +++ b/Xamarin.Forms.Core/TimePicker.cs @@ -4,7 +4,7 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_TimePickerRenderer))] - public class TimePicker : View + public class TimePicker : View, IElementConfiguration<TimePicker> { public static readonly BindableProperty FormatProperty = BindableProperty.Create(nameof(Format), typeof(string), typeof(TimePicker), "t"); @@ -16,6 +16,13 @@ namespace Xamarin.Forms return time.TotalHours < 24 && time.TotalMilliseconds >= 0; }); + readonly Lazy<PlatformConfigurationRegistry<TimePicker>> _platformConfigurationRegistry; + + public TimePicker() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<TimePicker>>(() => new PlatformConfigurationRegistry<TimePicker>(this)); + } + public string Format { get { return (string)GetValue(FormatProperty); } @@ -33,5 +40,10 @@ namespace Xamarin.Forms get { return (TimeSpan)GetValue(TimeProperty); } set { SetValue(TimeProperty, value); } } + + public IPlatformElementConfiguration<T, TimePicker> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/WebView.cs b/Xamarin.Forms.Core/WebView.cs index 8f28497c..b366bb4b 100644 --- a/Xamarin.Forms.Core/WebView.cs +++ b/Xamarin.Forms.Core/WebView.cs @@ -5,7 +5,7 @@ using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_WebViewRenderer))] - public class WebView : View + public class WebView : View, IElementConfiguration<WebView> { public static readonly BindableProperty SourceProperty = BindableProperty.Create("Source", typeof(WebViewSource), typeof(WebView), default(WebViewSource), propertyChanging: (bindable, oldvalue, newvalue) => @@ -32,6 +32,13 @@ namespace Xamarin.Forms public static readonly BindableProperty CanGoForwardProperty = CanGoForwardPropertyKey.BindableProperty; + readonly Lazy<PlatformConfigurationRegistry<WebView>> _platformConfigurationRegistry; + + public WebView() + { + _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<WebView>>(() => new PlatformConfigurationRegistry<WebView>(this)); + } + public bool CanGoBack { get { return (bool)GetValue(CanGoBackProperty); } @@ -122,5 +129,10 @@ namespace Xamarin.Forms if (handler != null) handler(this, args); } + + public IPlatformElementConfiguration<T, WebView> On<T>() where T : IConfigPlatform + { + return _platformConfigurationRegistry.Value.On<T>(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj index 0541673f..4fa202aa 100644 --- a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj +++ b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj @@ -87,6 +87,19 @@ <Compile Include="DateChangedEventArgs.cs" /> <Compile Include="DelegateLogListener.cs" /> <Compile Include="EnumerableExtensions.cs" /> + <Compile Include="PlatformConfiguration\AndroidSpecific\Application.cs" /> + <Compile Include="PlatformConfiguration\ExtensionPoints.cs" /> + <Compile Include="PlatformConfiguration\iOSSpecific\BlurEffectStyle.cs" /> + <Compile Include="PlatformConfiguration\iOSSpecific\NavigationPage.cs" /> + <Compile Include="PlatformConfiguration\iOSSpecific\VisualElement.cs" /> + <Compile Include="PlatformConfiguration\WindowsSpecific\MasterDetailPage.cs" /> + <Compile Include="PlatformConfiguration\WindowsSpecific\CollapseStyle.cs" /> + <Compile Include="Configuration.cs" /> + <Compile Include="IConfigElement.cs" /> + <Compile Include="IConfigPlatform.cs" /> + <Compile Include="IElementConfiguration.cs" /> + <Compile Include="IPlatformElementConfiguration.cs" /> + <Compile Include="PlatformConfigurationRegistry.cs" /> <Compile Include="IFontElement.cs" /> <Compile Include="DependencyAttribute.cs" /> <Compile Include="DependencyFetchTarget.cs" /> @@ -195,6 +208,8 @@ <Compile Include="PanUpdatedEventArgs.cs" /> <Compile Include="Performance.cs" /> <Compile Include="PinchGestureUpdatedEventArgs.cs" /> + <Compile Include="PlatformConfiguration\WindowsSpecific\Page.cs" /> + <Compile Include="PlatformConfiguration\WindowsSpecific\ToolbarPlacement.cs" /> <Compile Include="PlatformEffect.cs" /> <Compile Include="PointTypeConverter.cs" /> <Compile Include="Internals\PreserveAttribute.cs" /> diff --git a/Xamarin.Forms.Platform.Android/AppCompat/FormsAppCompatActivity.cs b/Xamarin.Forms.Platform.Android/AppCompat/FormsAppCompatActivity.cs index b6736df2..b200e27b 100644 --- a/Xamarin.Forms.Platform.Android/AppCompat/FormsAppCompatActivity.cs +++ b/Xamarin.Forms.Platform.Android/AppCompat/FormsAppCompatActivity.cs @@ -14,6 +14,7 @@ using Android.Util; using Android.Views; using Android.Widget; using Xamarin.Forms.Platform.Android.AppCompat; +using Xamarin.Forms.PlatformConfiguration.AndroidSpecific; using AToolbar = Android.Support.V7.Widget.Toolbar; using AColor = Android.Graphics.Color; using AlertDialog = Android.Support.V7.App.AlertDialog; @@ -142,7 +143,6 @@ namespace Xamarin.Forms.Platform.Android callback(resultCode, data); } - protected override void OnCreate(Bundle savedInstanceState) { if (!AllowFragmentRestore) @@ -167,7 +167,7 @@ namespace Xamarin.Forms.Platform.Android SetSupportActionBar(bar); - Window.SetSoftInputMode(SoftInput.AdjustPan); + SetSoftInputMode(); _layout = new ARelativeLayout(BaseContext); SetContentView(_layout); @@ -179,29 +179,7 @@ namespace Xamarin.Forms.Platform.Android OnStateChanged(); - _statusBarUnderlay = new global::Android.Views.View(this); - var layoutParameters = new ARelativeLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, GetStatusBarHeight()) { AlignWithParent = true }; - layoutParameters.AddRule(LayoutRules.AlignTop); - _statusBarUnderlay.LayoutParameters = layoutParameters; - _layout.AddView(_statusBarUnderlay); - - if (Forms.IsLollipopOrNewer) - { - Window.DecorView.SystemUiVisibility = (StatusBarVisibility)(SystemUiFlags.LayoutFullscreen | SystemUiFlags.LayoutStable); - Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds); - Window.SetStatusBarColor(AColor.Transparent); - - int primaryColorDark = GetColorPrimaryDark(); - - if (primaryColorDark != 0) - { - int r = AColor.GetRedComponent(primaryColorDark); - int g = AColor.GetGreenComponent(primaryColorDark); - int b = AColor.GetBlueComponent(primaryColorDark); - int a = AColor.GetAlphaComponent(primaryColorDark); - SetStatusBarColor(AColor.Argb(a, r, g, b)); - } - } + AddStatusBarUnderlay(); } protected override void OnDestroy() @@ -302,10 +280,39 @@ namespace Xamarin.Forms.Platform.Android return _statusBarHeight = result; } + void AddStatusBarUnderlay() + { + _statusBarUnderlay = new global::Android.Views.View(this); + + var layoutParameters = new ARelativeLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, GetStatusBarHeight()) { AlignWithParent = true }; + layoutParameters.AddRule(LayoutRules.AlignTop); + _statusBarUnderlay.LayoutParameters = layoutParameters; + _layout.AddView(_statusBarUnderlay); + + if (Forms.IsLollipopOrNewer) + { + Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds); + Window.SetStatusBarColor(AColor.Transparent); + + int primaryColorDark = GetColorPrimaryDark(); + + if (primaryColorDark != 0) + { + int r = AColor.GetRedComponent(primaryColorDark); + int g = AColor.GetGreenComponent(primaryColorDark); + int b = AColor.GetBlueComponent(primaryColorDark); + int a = AColor.GetAlphaComponent(primaryColorDark); + SetStatusBarColor(AColor.Argb(a, r, g, b)); + } + } + } + void AppOnPropertyChanged(object sender, PropertyChangedEventArgs args) { if (args.PropertyName == "MainPage") InternalSetPage(_application.MainPage); + if (args.PropertyName == PlatformConfiguration.AndroidSpecific.Application.WindowSoftInputModeAdjustProperty.PropertyName) + SetSoftInputMode(); } void CheckForAppLink(Intent intent) @@ -441,6 +448,45 @@ namespace Xamarin.Forms.Platform.Android InternalSetPage(_application.MainPage); } + void SetSoftInputMode() + { + SoftInput adjust = SoftInput.AdjustPan; + + if (Xamarin.Forms.Application.Current != null) + { + var elementValue = Xamarin.Forms.Application.Current.OnThisPlatform().GetWindowSoftInputModeAdjust(); + switch (elementValue) + { + default: + case WindowSoftInputModeAdjust.Pan: + adjust = SoftInput.AdjustPan; + break; + + case WindowSoftInputModeAdjust.Resize: + adjust = SoftInput.AdjustResize; + break; + } + } + + Window.SetSoftInputMode(adjust); + SetStatusBarVisibility(adjust); + } + + void SetStatusBarVisibility(SoftInput mode) + { + if (!Forms.IsLollipopOrNewer) + return; + + if (mode == SoftInput.AdjustResize) + { + Window.DecorView.SystemUiVisibility = (StatusBarVisibility)(SystemUiFlags.Immersive); + } + else + Window.DecorView.SystemUiVisibility = (StatusBarVisibility)(SystemUiFlags.LayoutFullscreen | SystemUiFlags.LayoutStable); + + _layout?.Invalidate(); + } + void UpdateProgressBarVisibility(bool isBusy) { if (!Forms.SupportsProgress) diff --git a/Xamarin.Forms.Platform.Android/FormsApplicationActivity.cs b/Xamarin.Forms.Platform.Android/FormsApplicationActivity.cs index ca862d1c..adb27f77 100644 --- a/Xamarin.Forms.Platform.Android/FormsApplicationActivity.cs +++ b/Xamarin.Forms.Platform.Android/FormsApplicationActivity.cs @@ -7,6 +7,7 @@ using Android.Content.Res; using Android.OS; using Android.Views; using Android.Widget; +using Xamarin.Forms.PlatformConfiguration.AndroidSpecific; namespace Xamarin.Forms.Platform.Android { @@ -126,6 +127,8 @@ namespace Xamarin.Forms.Platform.Android base.OnCreate(savedInstanceState); + SetSoftInputMode(); + _layout = new LinearLayout(BaseContext); SetContentView(_layout); @@ -221,6 +224,8 @@ namespace Xamarin.Forms.Platform.Android { if (args.PropertyName == "MainPage") InternalSetPage(_application.MainPage); + if (args.PropertyName == PlatformConfiguration.AndroidSpecific.Application.WindowSoftInputModeAdjustProperty.PropertyName) + SetSoftInputMode(); } void InternalSetPage(Page page) @@ -307,6 +312,28 @@ namespace Xamarin.Forms.Platform.Android InternalSetPage(_application.MainPage); } + void SetSoftInputMode() + { + SoftInput adjust = SoftInput.AdjustPan; + + if (Xamarin.Forms.Application.Current != null) + { + var elementValue = Xamarin.Forms.Application.Current.OnThisPlatform().GetWindowSoftInputModeAdjust(); + switch (elementValue) + { + default: + case WindowSoftInputModeAdjust.Pan: + adjust = SoftInput.AdjustPan; + break; + case WindowSoftInputModeAdjust.Resize: + adjust = SoftInput.AdjustResize; + break; + } + } + + Window.SetSoftInputMode(adjust); + } + void UpdateProgressBarVisibility(bool isBusy) { if (!Forms.SupportsProgress) diff --git a/Xamarin.Forms.Platform.Android/PlatformConfigurationExtensions.cs b/Xamarin.Forms.Platform.Android/PlatformConfigurationExtensions.cs new file mode 100644 index 00000000..49db4734 --- /dev/null +++ b/Xamarin.Forms.Platform.Android/PlatformConfigurationExtensions.cs @@ -0,0 +1,11 @@ +namespace Xamarin.Forms.Platform.Android +{ + public static class PlatformConfigurationExtensions + { + public static IPlatformElementConfiguration<PlatformConfiguration.Android, T> OnThisPlatform<T>(this T element) + where T : Element, IElementConfiguration<T> + { + return (element).On<PlatformConfiguration.Android>(); + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.Android/Xamarin.Forms.Platform.Android.csproj b/Xamarin.Forms.Platform.Android/Xamarin.Forms.Platform.Android.csproj index 35367397..33bfa03f 100644 --- a/Xamarin.Forms.Platform.Android/Xamarin.Forms.Platform.Android.csproj +++ b/Xamarin.Forms.Platform.Android/Xamarin.Forms.Platform.Android.csproj @@ -147,6 +147,7 @@ <Compile Include="OnMeasureDelegate.cs" /> <Compile Include="PanGestureHandler.cs" /> <Compile Include="PinchGestureHandler.cs" /> + <Compile Include="PlatformConfigurationExtensions.cs" /> <Compile Include="PlatformEffect.cs" /> <Compile Include="LayoutExtensions.cs" /> <Compile Include="Renderers\AHorizontalScrollView.cs" /> diff --git a/Xamarin.Forms.Platform.UAP/FormsCommandBar.cs b/Xamarin.Forms.Platform.UAP/FormsCommandBar.cs index 2ca665af..21e9ca16 100644 --- a/Xamarin.Forms.Platform.UAP/FormsCommandBar.cs +++ b/Xamarin.Forms.Platform.UAP/FormsCommandBar.cs @@ -6,32 +6,23 @@ namespace Xamarin.Forms.Platform.UWP { public class FormsCommandBar : CommandBar { - Windows.UI.Xaml.Controls.Button _moreButton; + // TODO Once 10.0.14393.0 is available, enable dynamic overflow: https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.commandbar.isdynamicoverflowenabled.aspx public FormsCommandBar() { PrimaryCommands.VectorChanged += OnCommandsChanged; SecondaryCommands.VectorChanged += OnCommandsChanged; - } - - protected override void OnApplyTemplate() - { - base.OnApplyTemplate(); - _moreButton = GetTemplateChild("MoreButton") as Windows.UI.Xaml.Controls.Button; - UpdateMore(); + UpdateVisibility(); } void OnCommandsChanged(IObservableVector<ICommandBarElement> sender, IVectorChangedEventArgs args) { - UpdateMore(); + UpdateVisibility(); } - void UpdateMore() + void UpdateVisibility() { - if (_moreButton == null) - return; - - _moreButton.Visibility = PrimaryCommands.Count > 0 || SecondaryCommands.Count > 0 ? Visibility.Visible : Visibility.Collapsed; + Visibility = PrimaryCommands.Count + SecondaryCommands.Count > 0 ? Visibility.Visible : Visibility.Collapsed; } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.UAP/MasterDetailControl.cs b/Xamarin.Forms.Platform.UAP/MasterDetailControl.cs index 6787ccec..51f737f8 100644 --- a/Xamarin.Forms.Platform.UAP/MasterDetailControl.cs +++ b/Xamarin.Forms.Platform.UAP/MasterDetailControl.cs @@ -1,7 +1,9 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media; +using Xamarin.Forms.PlatformConfiguration.WindowsSpecific; namespace Xamarin.Forms.Platform.UWP { @@ -17,9 +19,15 @@ namespace Xamarin.Forms.Platform.UWP public static readonly DependencyProperty IsPaneOpenProperty = DependencyProperty.Register("IsPaneOpen", typeof(bool), typeof(MasterDetailControl), new PropertyMetadata(default(bool))); - public static readonly DependencyProperty ShouldShowSplitModeProperty = DependencyProperty.Register("ShouldShowSplitMode", typeof(bool), typeof(MasterDetailControl), + public static readonly DependencyProperty ShouldShowSplitModeProperty = DependencyProperty.Register(nameof(ShouldShowSplitMode), typeof(bool), typeof(MasterDetailControl), new PropertyMetadata(default(bool), OnShouldShowSplitModeChanged)); + public static readonly DependencyProperty CollapseStyleProperty = DependencyProperty.Register(nameof(CollapseStyle), typeof(CollapseStyle), + typeof(MasterDetailControl), new PropertyMetadata(CollapseStyle.Full, CollapseStyleChanged)); + + public static readonly DependencyProperty CollapsedPaneWidthProperty = DependencyProperty.Register(nameof(CollapsedPaneWidth), typeof(double), typeof(MasterDetailControl), + new PropertyMetadata(48d, CollapsedPaneWidthChanged)); + public static readonly DependencyProperty DetailTitleProperty = DependencyProperty.Register("DetailTitle", typeof(string), typeof(MasterDetailControl), new PropertyMetadata(default(string))); public static readonly DependencyProperty ToolbarForegroundProperty = DependencyProperty.Register("ToolbarForeground", typeof(Brush), typeof(MasterDetailControl), @@ -37,20 +45,26 @@ namespace Xamarin.Forms.Platform.UWP public static readonly DependencyProperty MasterToolbarVisibilityProperty = DependencyProperty.Register("MasterToolbarVisibility", typeof(Visibility), typeof(MasterDetailControl), new PropertyMetadata(default(Visibility))); + public static readonly DependencyProperty ContentTogglePaneButtonVisibilityProperty = DependencyProperty.Register(nameof(ContentTogglePaneButtonVisibility), typeof(Visibility), typeof(MasterDetailControl), + new PropertyMetadata(default(Visibility))); + CommandBar _commandBar; + Border _bottomCommandBarArea; + Border _topCommandBarArea; TaskCompletionSource<CommandBar> _commandBarTcs; FrameworkElement _masterPresenter; FrameworkElement _detailPresenter; SplitView _split; + ToolbarPlacement _toolbarPlacement; - public MasterDetailControl() + public MasterDetailControl() { DefaultStyleKey = typeof(MasterDetailControl); - MasterTitleVisibility = Visibility.Collapsed; + DetailTitleVisibility = Visibility.Collapsed; - if (Device.Idiom != TargetIdiom.Phone) - MasterToolbarVisibility = Visibility.Collapsed; + + CollapseStyle = CollapseStyle.Full; } public FrameworkElement Detail @@ -148,6 +162,34 @@ namespace Xamarin.Forms.Platform.UWP set { SetValue(ShouldShowSplitModeProperty, value); } } + public CollapseStyle CollapseStyle + { + get { return (CollapseStyle)GetValue(CollapseStyleProperty); } + set { SetValue(CollapseStyleProperty, value); } + } + + public ToolbarPlacement ToolbarPlacement + { + get { return _toolbarPlacement; } + set + { + _toolbarPlacement = value; + UpdateToolbarPlacement(); + } + } + + public Visibility ContentTogglePaneButtonVisibility + { + get { return (Visibility)GetValue(ContentTogglePaneButtonVisibilityProperty); } + set { SetValue(ContentTogglePaneButtonVisibilityProperty, value); } + } + + public double CollapsedPaneWidth + { + get { return (double)GetValue(CollapsedPaneWidthProperty); } + set { SetValue(CollapsedPaneWidthProperty, value); } + } + public Brush ToolbarBackground { get { return (Brush)GetValue(ToolbarBackgroundProperty); } @@ -194,8 +236,11 @@ namespace Xamarin.Forms.Platform.UWP _detailPresenter = GetTemplateChild("DetailPresenter") as FrameworkElement; _commandBar = GetTemplateChild("CommandBar") as CommandBar; + _bottomCommandBarArea = GetTemplateChild("BottomCommandBarArea") as Border; + _topCommandBarArea = GetTemplateChild("TopCommandBarArea") as Border; - UpdateMode(); + UpdateToolbarPlacement(); + UpdateMode(); if (_commandBarTcs != null) _commandBarTcs.SetResult(_commandBar); @@ -206,6 +251,21 @@ namespace Xamarin.Forms.Platform.UWP ((MasterDetailControl)dependencyObject).UpdateMode(); } + static void CollapseStyleChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs args) + { + ((MasterDetailControl)dependencyObject).UpdateMode(); + } + + static void ToolbarPlacementChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs args) + { + ((MasterDetailControl)dependencyObject).UpdateToolbarPlacement(); + } + + static void CollapsedPaneWidthChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs) + { + ((MasterDetailControl)dependencyObject).UpdateMode(); + } + void OnToggleClicked(object sender, RoutedEventArgs args) { IsPaneOpen = !IsPaneOpen; @@ -214,9 +274,33 @@ namespace Xamarin.Forms.Platform.UWP void UpdateMode() { if (_split == null) + { return; + } - _split.DisplayMode = ShouldShowSplitMode ? SplitViewDisplayMode.Inline : SplitViewDisplayMode.Overlay; + _split.DisplayMode = ShouldShowSplitMode + ? SplitViewDisplayMode.Inline + : CollapseStyle == CollapseStyle.Full ? SplitViewDisplayMode.Overlay : SplitViewDisplayMode.CompactOverlay; + + _split.CompactPaneLength = CollapsedPaneWidth; + + if (_split.DisplayMode == SplitViewDisplayMode.Inline) + { + // If we've determined that the pane will always be open, then there's no + // reason to display the show/hide pane button in the master + MasterToolbarVisibility = Visibility.Collapsed; + } + + // If we're in compact mode or the pane is always open, + // we don't need to display the content pane's toggle button + ContentTogglePaneButtonVisibility = _split.DisplayMode == SplitViewDisplayMode.Overlay + ? Visibility.Visible + : Visibility.Collapsed; + } + + void UpdateToolbarPlacement() + { + ToolbarPlacementHelper.UpdateToolbarPlacement(_commandBar, ToolbarPlacement, _bottomCommandBarArea, _topCommandBarArea); } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.UAP/MasterDetailControlStyle.xaml b/Xamarin.Forms.Platform.UAP/MasterDetailControlStyle.xaml new file mode 100644 index 00000000..d82f78af --- /dev/null +++ b/Xamarin.Forms.Platform.UAP/MasterDetailControlStyle.xaml @@ -0,0 +1,64 @@ +<ResourceDictionary + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:uwp="using:Xamarin.Forms.Platform.UWP"> + <Style TargetType="uwp:MasterDetailControl"> + <Setter Property="ToolbarForeground" Value="{ThemeResource DefaultTextForegroundThemeBrush}" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="uwp:MasterDetailControl"> + <SplitView x:Name="SplitView" IsPaneOpen="{Binding IsPaneOpen,RelativeSource={RelativeSource TemplatedParent},Mode=TwoWay}" DisplayMode="Overlay"> + <SplitView.Pane> + <Grid> + <Grid.RowDefinitions> + <RowDefinition Height="Auto" /> + <RowDefinition Height="*" /> + </Grid.RowDefinitions> + <StackPanel Grid.Row="0" Orientation="Horizontal" Visibility="{TemplateBinding MasterToolbarVisibility}" Background="{TemplateBinding ToolbarBackground}"> + <Button Name="PaneTogglePane" Style="{ThemeResource PaneButton}" Foreground="{TemplateBinding ToolbarForeground}" /> + <TextBlock Margin="10,0,0,0" Style="{ThemeResource TitleTextBlockStyle}" VerticalAlignment="Center" Text="{TemplateBinding MasterTitle}" Visibility="{TemplateBinding MasterTitleVisibility}" Foreground="{TemplateBinding ToolbarForeground}"/> + </StackPanel> + <ContentPresenter x:Name="MasterPresenter" Grid.Row="1" Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Master}" /> + </Grid> + </SplitView.Pane> + <SplitView.Content> + <Grid> + <Grid.RowDefinitions> + <RowDefinition Height="Auto" /> + <RowDefinition Height="*" /> + <RowDefinition Height="Auto" /> + </Grid.RowDefinitions> + + <Grid x:Name="TitleBar" Background="{TemplateBinding ToolbarBackground}" HorizontalAlignment="Stretch"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="Auto"></ColumnDefinition> + <ColumnDefinition Width="*"></ColumnDefinition> + </Grid.ColumnDefinitions> + + <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Background="{TemplateBinding ToolbarBackground}" > + + <Button Name="ContentTogglePane" Style="{ThemeResource PaneButton}" Foreground="{TemplateBinding ToolbarForeground}" + Visibility="{TemplateBinding ContentTogglePaneButtonVisibility}" /> + + <Border Height="{ThemeResource TitleBarHeight}" Visibility="{TemplateBinding DetailTitleVisibility}"> + <TextBlock Text="{TemplateBinding DetailTitle}" VerticalAlignment="Center" Margin="10,0,0,0" Foreground="{TemplateBinding ToolbarForeground}" Style="{ThemeResource TitleTextBlockStyle}" /> + </Border> + + </StackPanel> + + <Border x:Name="TopCommandBarArea" Grid.Column="1" HorizontalAlignment="Stretch"> + <uwp:FormsCommandBar x:Name="CommandBar" VerticalContentAlignment="Top" Background="{TemplateBinding ToolbarBackground}" Height="{ThemeResource TitleBarHeight}" /> + </Border> + </Grid> + + <ContentPresenter x:Name="DetailPresenter" Grid.Row="1" Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Detail}" /> + + <Border x:Name="BottomCommandBarArea" Grid.Row="2" HorizontalAlignment="Stretch"></Border> + </Grid> + </SplitView.Content> + </SplitView> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> +</ResourceDictionary>
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.UAP/MasterDetailPageRenderer.cs b/Xamarin.Forms.Platform.UAP/MasterDetailPageRenderer.cs index c424c7fe..f0048154 100644 --- a/Xamarin.Forms.Platform.UAP/MasterDetailPageRenderer.cs +++ b/Xamarin.Forms.Platform.UAP/MasterDetailPageRenderer.cs @@ -6,6 +6,8 @@ using Windows.UI.Xaml.Automation; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Media; +using Xamarin.Forms.PlatformConfiguration.WindowsSpecific; +using Specifics = Xamarin.Forms.PlatformConfiguration.WindowsSpecific.MasterDetailPage; namespace Xamarin.Forms.Platform.UWP { @@ -56,7 +58,7 @@ namespace Xamarin.Forms.Platform.UWP set { Control.ToolbarForeground = value; } } -IPageController PageController => Element as IPageController; + IPageController PageController => Element as IPageController; IMasterDetailPageController MasterDetailPageController => Element as IMasterDetailPageController; @@ -68,11 +70,9 @@ IPageController PageController => Element as IPageController; { if (_showTitle == value) return; + _showTitle = value; - if (_showTitle) - Control.DetailTitleVisibility = Visibility.Visible; - else - Control.DetailTitleVisibility = Visibility.Collapsed; + Control.DetailTitleVisibility = _showTitle ? Visibility.Visible : Visibility.Collapsed; } } @@ -132,7 +132,7 @@ IPageController PageController => Element as IPageController; { Control = new MasterDetailControl(); Control.Loaded += OnControlLoaded; - Control.Unloaded += OnControlUnlaoded; + Control.Unloaded += OnControlUnloaded; Control.SizeChanged += OnNativeSizeChanged; Control.RegisterPropertyChangedCallback(MasterDetailControl.IsPaneOpenProperty, OnIsPaneOpenChanged); @@ -148,7 +148,12 @@ IPageController PageController => Element as IPageController; if (!string.IsNullOrEmpty(e.NewElement.AutomationId)) Control.SetValue(AutomationProperties.AutomationIdProperty, e.NewElement.AutomationId); - } + +#if WINDOWS_UWP + UpdateToolbarPlacement(); +#endif + + } } protected virtual void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) @@ -159,8 +164,12 @@ IPageController PageController => Element as IPageController; UpdateMaster(); else if (e.PropertyName == "Detail") UpdateDetail(); - else if (e.PropertyName == "ShouldShowSplitMode") + else if (e.PropertyName == nameof(MasterDetailControl.ShouldShowSplitMode) + || e.PropertyName == Specifics.CollapseStyleProperty.PropertyName + || e.PropertyName == Specifics.CollapsedPaneWidthProperty.PropertyName) UpdateMode(); + else if(e.PropertyName == PlatformConfiguration.WindowsSpecific.Page.ToolbarPlacementProperty.PropertyName) + UpdateToolbarPlacement(); } void ClearDetail() @@ -202,7 +211,7 @@ IPageController PageController => Element as IPageController; UpdateBounds(); } - void OnControlUnlaoded(object sender, RoutedEventArgs routedEventArgs) + void OnControlUnloaded(object sender, RoutedEventArgs routedEventArgs) { PageController?.SendDisappearing(); } @@ -264,6 +273,7 @@ IPageController PageController => Element as IPageController; return; Control.DetailTitle = (_detail as NavigationPage)?.CurrentPage?.Title ?? _detail.Title ?? Element?.Title; + (this as ITitleProvider).ShowTitle = !string.IsNullOrEmpty(Control.DetailTitle); } void UpdateIsPresented() @@ -291,10 +301,18 @@ IPageController PageController => Element as IPageController; void UpdateMode() { + Control.CollapseStyle = Element.OnThisPlatform().GetCollapseStyle(); + Control.CollapsedPaneWidth = Element.OnThisPlatform().CollapsedPaneWidth(); Control.ShouldShowSplitMode = MasterDetailPageController.ShouldShowSplitMode; } #if WINDOWS_UWP + + void UpdateToolbarPlacement() + { + Control.ToolbarPlacement = Element.OnThisPlatform().GetToolbarPlacement(); + } + public void BindForegroundColor(AppBar appBar) { SetAppBarForegroundBinding(appBar); diff --git a/Xamarin.Forms.Platform.UAP/PageControlStyle.xaml b/Xamarin.Forms.Platform.UAP/PageControlStyle.xaml new file mode 100644 index 00000000..bd199487 --- /dev/null +++ b/Xamarin.Forms.Platform.UAP/PageControlStyle.xaml @@ -0,0 +1,42 @@ +<ResourceDictionary + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:uwp="using:Xamarin.Forms.Platform.UWP"> + <Style TargetType="uwp:PageControl"> + <Setter Property="ContentMargin" Value="0" /> + <Setter Property="TitleBrush" Value="{ThemeResource DefaultTextForegroundThemeBrush}" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="uwp:PageControl"> + <Grid Background="{TemplateBinding Background}"> + + <Grid.RowDefinitions> + <RowDefinition Height="Auto" /> + <RowDefinition Height="*" /> + <RowDefinition Height="Auto" /> + </Grid.RowDefinitions> + + <Grid x:Name="TitleBar" Background="{TemplateBinding ToolbarBackground}" HorizontalAlignment="Stretch"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="Auto"></ColumnDefinition> + <ColumnDefinition Width="*"></ColumnDefinition> + </Grid.ColumnDefinitions> + + <Border Height="{ThemeResource TitleBarHeight}" Visibility="{TemplateBinding TitleVisibility}"> + <TextBlock Text="{Binding Title}" VerticalAlignment="Center" Padding="10,0,0,0" Foreground="{TemplateBinding TitleBrush}" Style="{ThemeResource TitleTextBlockStyle}" /> + </Border> + + <Border x:Name="TopCommandBarArea" Grid.Column="1" HorizontalAlignment="Stretch"> + <uwp:FormsCommandBar x:Name="CommandBar" Background="{TemplateBinding ToolbarBackground}" Height="{ThemeResource TitleBarHeight}" /> + </Border> + </Grid> + + <ContentPresenter Margin="{TemplateBinding ContentMargin}" ContentTransitions="{TemplateBinding ContentTransitions}" x:Name="presenter" Grid.Row="1" /> + + <Border x:Name="BottomCommandBarArea" Grid.Row="2" HorizontalAlignment="Stretch"></Border> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> +</ResourceDictionary>
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.UAP/Resources.xaml b/Xamarin.Forms.Platform.UAP/Resources.xaml index 5f3a4999..732283e8 100644 --- a/Xamarin.Forms.Platform.UAP/Resources.xaml +++ b/Xamarin.Forms.Platform.UAP/Resources.xaml @@ -5,8 +5,11 @@ x:Class="Xamarin.Forms.Platform.UWP.Resources"> <ResourceDictionary.MergedDictionaries> + <ResourceDictionary Source="PageControlStyle.xaml" /> <ResourceDictionary Source="FormsTextBoxStyle.xaml" /> <ResourceDictionary Source="AutoSuggestStyle.xaml" /> + <ResourceDictionary Source="MasterDetailControlStyle.xaml" /> + <ResourceDictionary Source="TabbedPageStyle.xaml" /> </ResourceDictionary.MergedDictionaries> <uwp:CaseConverter x:Key="LowerConverter" ConvertToUpper="False" /> @@ -247,52 +250,7 @@ </Setter> </Style> - <Style TargetType="uwp:MasterDetailControl"> - <Setter Property="ToolbarForeground" Value="{ThemeResource DefaultTextForegroundThemeBrush}" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="uwp:MasterDetailControl"> - <SplitView x:Name="SplitView" IsPaneOpen="{Binding IsPaneOpen,RelativeSource={RelativeSource TemplatedParent},Mode=TwoWay}" DisplayMode="Overlay"> - <SplitView.Pane> - <Grid> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition Height="*" /> - </Grid.RowDefinitions> - <StackPanel Grid.Row="0" Orientation="Horizontal" Visibility="{TemplateBinding MasterToolbarVisibility}" Background="{TemplateBinding ToolbarBackground}"> - <Button Name="PaneTogglePane" Style="{ThemeResource PaneButton}" Foreground="{TemplateBinding ToolbarForeground}" /> - <TextBlock Style="{ThemeResource TitleTextBlockStyle}" VerticalAlignment="Center" Text="{TemplateBinding MasterTitle}" Visibility="{TemplateBinding MasterTitleVisibility}" Foreground="{TemplateBinding ToolbarForeground}"/> - </StackPanel> - - <ContentPresenter x:Name="MasterPresenter" Grid.Row="1" Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Master}" /> - </Grid> - </SplitView.Pane> - <SplitView.Content> - <Grid> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition Height="*" /> - </Grid.RowDefinitions> - - <uwp:FormsCommandBar x:Name="CommandBar" Grid.Row="0" Foreground="{TemplateBinding ToolbarForeground}" Background="{TemplateBinding ToolbarBackground}" Visibility="{TemplateBinding DetailTitleVisibility}" VerticalContentAlignment="Top"> - <uwp:FormsCommandBar.Content> - <StackPanel Orientation="Horizontal" VerticalAlignment="Center"> - <Button Name="ContentTogglePane" Style="{ThemeResource PaneButton}" Foreground="{TemplateBinding ToolbarForeground}" Visibility="{Binding ElementName=SplitView,Path=IsPaneOpen,Converter={StaticResource InvertedBoolVisibilityConverter}}" /> - <ContentControl VerticalAlignment="Top" VerticalContentAlignment="Center" Height="{StaticResource TitleBarHeight}"> - <TextBlock Text="{TemplateBinding DetailTitle}" Margin="10,0,0,0" Foreground="{TemplateBinding ToolbarForeground}" Style="{ThemeResource TitleTextBlockStyle}" /> - </ContentControl> - </StackPanel> - </uwp:FormsCommandBar.Content> - </uwp:FormsCommandBar> - - <ContentPresenter x:Name="DetailPresenter" Grid.Row="1" Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Detail}" /> - </Grid> - </SplitView.Content> - </SplitView> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> + <Style x:Key="FormsListViewItem" TargetType="ListViewItem"> <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" /> @@ -470,215 +428,6 @@ </uwp:EntryCellTextBox> </DataTemplate> - <Style x:Key="TabbedPageStyle" TargetType="uwp:FormsPivot"> - <Setter Property="HeaderTemplate"> - <Setter.Value> - <DataTemplate> - <TextBlock Name="TabbedPageHeaderTextBlock" Text="{Binding Title}" Style="{ThemeResource BodyTextBlockStyle}" /> - </DataTemplate> - </Setter.Value> - </Setter> - - <Setter Property="ItemTemplate"> - <Setter.Value> - <DataTemplate> - <uwp:TabbedPagePresenter Content="{Binding}" ContentTemplate="{ThemeResource ContainedPageTemplate}" /> - </DataTemplate> - </Setter.Value> - </Setter> - - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="uwp:FormsPivot"> - <Grid x:Name="RootElement" Background="{TemplateBinding Background}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}"> - <Grid.RowDefinitions> - <RowDefinition Height="Auto"/> - <RowDefinition Height="*"/> - </Grid.RowDefinitions> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="NavigationButtonsVisibility"> - <VisualState x:Name="NavigationButtonsHidden"/> - <VisualState x:Name="NavigationButtonsVisible"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="NextButton"> - <DiscreteObjectKeyFrame KeyTime="0" Value="1"/> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsEnabled" Storyboard.TargetName="NextButton"> - <DiscreteObjectKeyFrame KeyTime="0" Value="True"/> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PreviousButton"> - <DiscreteObjectKeyFrame KeyTime="0" Value="1"/> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsEnabled" Storyboard.TargetName="PreviousButton"> - <DiscreteObjectKeyFrame KeyTime="0" Value="True"/> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="HeaderStates"> - <VisualState x:Name="HeaderDynamic"/> - <VisualState x:Name="HeaderStatic"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="Header"> - <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="StaticHeader"> - <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <uwp:FormsCommandBar x:Name="CommandBar" Grid.Row="0" VerticalContentAlignment="Top" Background="{TemplateBinding ToolbarBackground}" Visibility="{TemplateBinding ToolbarVisibility}" > - <uwp:FormsCommandBar.Content> - <ContentControl VerticalAlignment="Top" VerticalContentAlignment="Center" Height="{ThemeResource TitleBarHeight}" > - <TextBlock Text="{TemplateBinding Title}" VerticalAlignment="Center" Padding="10,0,0,0" Foreground="{TemplateBinding ToolbarForeground}" Style="{ThemeResource TitleTextBlockStyle}" /> - </ContentControl> - </uwp:FormsCommandBar.Content> - </uwp:FormsCommandBar> - <Grid Grid.Row="1"> - <Grid.Resources> - <ControlTemplate x:Key="NextTemplate" TargetType="Button"> - <Border x:Name="Root" BorderBrush="{ThemeResource SystemControlForegroundTransparentBrush}" BorderThickness="{ThemeResource PivotNavButtonBorderThemeThickness}" Background="{ThemeResource SystemControlBackgroundBaseMediumLowBrush}"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal"/> - <VisualState x:Name="PointerOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Root"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseMediumBrush}"/> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltAltMediumHighBrush}"/> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Root"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseMediumHighBrush}"/> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltAltMediumHighBrush}"/> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <FontIcon x:Name="Arrow" Foreground="{ThemeResource SystemControlForegroundAltMediumHighBrush}" FontSize="12" FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="" HorizontalAlignment="Center" MirroredWhenRightToLeft="True" UseLayoutRounding="False" VerticalAlignment="Center"/> - </Border> - </ControlTemplate> - <ControlTemplate x:Key="PreviousTemplate" TargetType="Button"> - <Border x:Name="Root" BorderBrush="{ThemeResource SystemControlForegroundTransparentBrush}" BorderThickness="{ThemeResource PivotNavButtonBorderThemeThickness}" Background="{ThemeResource SystemControlBackgroundBaseMediumLowBrush}"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal"/> - <VisualState x:Name="PointerOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Root"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseMediumBrush}"/> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltAltMediumHighBrush}"/> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Root"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseMediumHighBrush}"/> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="Arrow"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltAltMediumHighBrush}"/> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <FontIcon x:Name="Arrow" Foreground="{ThemeResource SystemControlForegroundAltMediumHighBrush}" FontSize="12" FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="" HorizontalAlignment="Center" MirroredWhenRightToLeft="True" UseLayoutRounding="False" VerticalAlignment="Center"/> - </Border> - </ControlTemplate> - </Grid.Resources> - <ScrollViewer x:Name="ScrollViewer" BringIntoViewOnFocusChange="False" HorizontalSnapPointsAlignment="Center" HorizontalSnapPointsType="MandatorySingle" HorizontalScrollBarVisibility="Hidden" Margin="{TemplateBinding Padding}" Template="{StaticResource ScrollViewerScrollBarlessTemplate}" VerticalSnapPointsType="None" VerticalScrollBarVisibility="Disabled" VerticalScrollMode="Disabled" VerticalContentAlignment="Stretch" ZoomMode="Disabled"> - <PivotPanel x:Name="Panel" VerticalAlignment="Stretch"> - <Grid x:Name="PivotLayoutElement"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="Auto"/> - <ColumnDefinition Width="*"/> - <ColumnDefinition Width="Auto"/> - </Grid.ColumnDefinitions> - <Grid.RowDefinitions> - <RowDefinition Height="Auto"/> - <RowDefinition Height="*"/> - </Grid.RowDefinitions> - <Grid.RenderTransform> - <CompositeTransform x:Name="PivotLayoutElementTranslateTransform"/> - </Grid.RenderTransform> - <ContentPresenter x:Name="LeftHeaderPresenter" ContentTemplate="{TemplateBinding LeftHeaderTemplate}" Content="{TemplateBinding LeftHeader}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> - <ContentControl x:Name="HeaderClipper" Grid.Column="1" HorizontalContentAlignment="Stretch" UseSystemFocusVisuals="True"> - <ContentControl.Clip> - <RectangleGeometry x:Name="HeaderClipperGeometry"/> - </ContentControl.Clip> - <Grid Name="TabbedPageHeaderGrid" Background="{TemplateBinding ToolbarBackground}"> - <PivotHeaderPanel x:Name="StaticHeader" Visibility="Collapsed"/> - <PivotHeaderPanel x:Name="Header"> - <PivotHeaderPanel.RenderTransform> - <TransformGroup> - <CompositeTransform x:Name="HeaderTranslateTransform"/> - <CompositeTransform x:Name="HeaderOffsetTranslateTransform"/> - </TransformGroup> - </PivotHeaderPanel.RenderTransform> - </PivotHeaderPanel> - </Grid> - </ContentControl> - <Button x:Name="PreviousButton" Background="Transparent" Grid.Column="1" HorizontalAlignment="Left" Height="36" IsTabStop="False" IsEnabled="False" Margin="{ThemeResource PivotNavButtonMargin}" Opacity="0" Template="{StaticResource PreviousTemplate}" UseSystemFocusVisuals="False" VerticalAlignment="Top" Width="20"/> - <Button x:Name="NextButton" Background="Transparent" Grid.Column="1" HorizontalAlignment="Right" Height="36" IsTabStop="False" IsEnabled="False" Margin="{ThemeResource PivotNavButtonMargin}" Opacity="0" Template="{StaticResource NextTemplate}" UseSystemFocusVisuals="False" VerticalAlignment="Top" Width="20"/> - <ContentPresenter x:Name="RightHeaderPresenter" ContentTemplate="{TemplateBinding RightHeaderTemplate}" Content="{TemplateBinding RightHeader}" Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> - <ItemsPresenter x:Name="PivotItemPresenter" Grid.ColumnSpan="3" Grid.Row="1"> - <ItemsPresenter.RenderTransform> - <TransformGroup> - <TranslateTransform x:Name="ItemsPresenterTranslateTransform"/> - <CompositeTransform x:Name="ItemsPresenterCompositeTransform"/> - </TransformGroup> - </ItemsPresenter.RenderTransform> - </ItemsPresenter> - </Grid> - </PivotPanel> - </ScrollViewer> - </Grid> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <Style x:Key="PageControlDefaultStyle" TargetType="uwp:PageControl"> - <Setter Property="ContentMargin" Value="0" /> - <Setter Property="TitleBrush" Value="{ThemeResource DefaultTextForegroundThemeBrush}" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="uwp:PageControl"> - <Grid Background="{TemplateBinding Background}"> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition Height="*" /> - </Grid.RowDefinitions> - - <uwp:FormsCommandBar x:Name="CommandBar" Grid.Row="0" VerticalContentAlignment="Top" Background="{TemplateBinding NavigationBarBackground}" Visibility="{Binding ShowNavigationBar,RelativeSource={RelativeSource Mode=TemplatedParent},Converter={StaticResource BoolVisibilityConverter}}"> - <uwp:FormsCommandBar.Content> - <ContentControl VerticalAlignment="Top" VerticalContentAlignment="Center" Height="{ThemeResource TitleBarHeight}"> - <TextBlock Text="{Binding Title}" VerticalAlignment="Center" Padding="10,0,0,0" Foreground="{TemplateBinding TitleBrush}" Style="{ThemeResource TitleTextBlockStyle}" /> - </ContentControl> - </uwp:FormsCommandBar.Content> - </uwp:FormsCommandBar> - - <ContentPresenter Margin="{TemplateBinding ContentMargin}" ContentTransitions="{TemplateBinding ContentTransitions}" x:Name="presenter" Grid.Row="1" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - <Style TargetType="uwp:StepperControl"> <Setter Property="Template"> <Setter.Value> @@ -697,8 +446,6 @@ </Setter> </Style> - <Style TargetType="uwp:PageControl" BasedOn="{StaticResource PageControlDefaultStyle}" /> - <Style TargetType="TextBox"> <Setter Property="Margin" Value="0" /> </Style> diff --git a/Xamarin.Forms.Platform.UAP/TabbedPageRenderer.cs b/Xamarin.Forms.Platform.UAP/TabbedPageRenderer.cs index aa988b80..e9bbd4a1 100644 --- a/Xamarin.Forms.Platform.UAP/TabbedPageRenderer.cs +++ b/Xamarin.Forms.Platform.UAP/TabbedPageRenderer.cs @@ -7,6 +7,7 @@ using Windows.UI.Xaml.Automation; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media; using Xamarin.Forms.Internals; +using Xamarin.Forms.PlatformConfiguration.WindowsSpecific; using WGrid = Windows.UI.Xaml.Controls.Grid; namespace Xamarin.Forms.Platform.UWP @@ -40,302 +41,320 @@ namespace Xamarin.Forms.Platform.UWP } } - public class TabbedPageRenderer : IVisualElementRenderer, ITitleProvider, IToolbarProvider - { - const string TabBarHeaderTextBlockName = "TabbedPageHeaderTextBlock"; - const string TabBarHeaderGridName = "TabbedPageHeaderGrid"; - - Color _barBackgroundColor; - Color _barTextColor; - bool _disposed; - bool _showTitle; - VisualElementTracker<Page, Pivot> _tracker; - - ITitleProvider TitleProvider => this; - - public FormsPivot Control { get; private set; } - - public TabbedPage Element { get; private set; } - - protected VisualElementTracker<Page, Pivot> Tracker - { - get { return _tracker; } - set - { - if (_tracker == value) - return; - - if (_tracker != null) - _tracker.Dispose(); - - _tracker = value; - } - } - - public void Dispose() - { - Dispose(true); - } - - Brush ITitleProvider.BarBackgroundBrush - { - set { Control.ToolbarBackground = value; } - } - - Brush ITitleProvider.BarForegroundBrush - { - set { Control.ToolbarForeground = value; } - } - - IPageController PageController => Element as IPageController; - - bool ITitleProvider.ShowTitle - { - get { return _showTitle; } - - set - { - if (_showTitle == value) - return; - _showTitle = value; - - UpdateBarVisibility(); - } - } - - string ITitleProvider.Title - { - get { return (string)Control?.Title; } - - set - { - if (Control != null && _showTitle) - Control.Title = value; - } - } - - public Task<CommandBar> GetCommandBarAsync() - { - return (Control as IToolbarProvider)?.GetCommandBarAsync(); - } - - public FrameworkElement ContainerElement - { - get { return Control; } - } - - VisualElement IVisualElementRenderer.Element - { - get { return Element; } - } - - public event EventHandler<VisualElementChangedEventArgs> ElementChanged; - - public SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint) - { - var constraint = new Windows.Foundation.Size(widthConstraint, heightConstraint); - - double oldWidth = Control.Width; - double oldHeight = Control.Height; - - Control.Height = double.NaN; - Control.Width = double.NaN; - - Control.Measure(constraint); - var result = new Size(Math.Ceiling(Control.DesiredSize.Width), Math.Ceiling(Control.DesiredSize.Height)); - - Control.Width = oldWidth; - Control.Height = oldHeight; - - return new SizeRequest(result); - } - - public void SetElement(VisualElement element) - { - if (element != null && !(element is TabbedPage)) - throw new ArgumentException("Element must be a TabbedPage", "element"); - - TabbedPage oldElement = Element; - Element = (TabbedPage)element; - - if (oldElement != null) - { - oldElement.PropertyChanged -= OnElementPropertyChanged; - ((INotifyCollectionChanged)oldElement.Children).CollectionChanged -= OnPagesChanged; - } - - if (element != null) - { - if (Control == null) - { - Control = new FormsPivot { Style = (Windows.UI.Xaml.Style)Windows.UI.Xaml.Application.Current.Resources["TabbedPageStyle"], }; - - Control.SelectionChanged += OnSelectionChanged; - - Tracker = new BackgroundTracker<Pivot>(Windows.UI.Xaml.Controls.Control.BackgroundProperty) { Element = (Page)element, Control = Control, Container = Control }; + public class TabbedPageRenderer : IVisualElementRenderer, ITitleProvider, IToolbarProvider + { + const string TabBarHeaderTextBlockName = "TabbedPageHeaderTextBlock"; + const string TabBarHeaderGridName = "TabbedPageHeaderGrid"; - Control.Loaded += OnLoaded; - Control.Unloaded += OnUnloaded; - } - - Control.DataContext = Element; - OnPagesChanged(Element.Children, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); - - UpdateCurrentPage(); - - ((INotifyCollectionChanged)Element.Children).CollectionChanged += OnPagesChanged; - element.PropertyChanged += OnElementPropertyChanged; - - if (!string.IsNullOrEmpty(element.AutomationId)) - Control.SetValue(AutomationProperties.AutomationIdProperty, element.AutomationId); - } - - OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); - } - - protected virtual void Dispose(bool disposing) - { - if (!disposing || _disposed) - return; - - _disposed = true; - PageController?.SendDisappearing(); - SetElement(null); - Tracker = null; - } - - protected virtual void OnElementChanged(VisualElementChangedEventArgs e) - { - EventHandler<VisualElementChangedEventArgs> changed = ElementChanged; - if (changed != null) - changed(this, e); - } - - void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) - { - if (e.PropertyName == nameof(TabbedPage.CurrentPage)) - { - UpdateCurrentPage(); - UpdateBarTextColor(); - UpdateBarBackgroundColor(); - } - else if (e.PropertyName == TabbedPage.BarTextColorProperty.PropertyName) - UpdateBarTextColor(); - else if (e.PropertyName == TabbedPage.BarBackgroundColorProperty.PropertyName) - UpdateBarBackgroundColor(); - } - - void OnLoaded(object sender, RoutedEventArgs args) - { - PageController?.SendAppearing(); - UpdateBarTextColor(); - UpdateBarBackgroundColor(); - } - - void OnPagesChanged(object sender, NotifyCollectionChangedEventArgs e) - { - e.Apply(Element.Children, Control.Items); - - // Potential performance issue, UpdateLayout () is called for every page change - Control.UpdateLayout(); - } - - void OnSelectionChanged(object sender, SelectionChangedEventArgs e) - { - if (Element == null) - return; - - Page page = e.AddedItems.Count > 0 ? (Page)e.AddedItems[0] : null; - Page currentPage = Element.CurrentPage; - if (currentPage == page) - return; - ((IPageController)currentPage)?.SendDisappearing(); - Element.CurrentPage = page; - ((IPageController)page)?.SendAppearing(); - } - - void OnUnloaded(object sender, RoutedEventArgs args) - { - PageController?.SendDisappearing(); - } - - Brush GetBarBackgroundBrush() - { - object defaultColor = Windows.UI.Xaml.Application.Current.Resources["SystemControlBackgroundChromeMediumLowBrush"]; - if (Element.BarBackgroundColor.IsDefault && defaultColor != null) - return (Brush)defaultColor; - return Element.BarBackgroundColor.ToBrush(); - } - - Brush GetBarForegroundBrush() - { - object defaultColor = Windows.UI.Xaml.Application.Current.Resources["ApplicationForegroundThemeBrush"]; - if (Element.BarTextColor.IsDefault && defaultColor != null) - return (Brush)defaultColor; - return Element.BarTextColor.ToBrush(); - } - - void UpdateBarBackgroundColor() - { - if (Element == null) return; - var barBackgroundColor = Element.BarBackgroundColor; - - if (barBackgroundColor == _barBackgroundColor) return; - _barBackgroundColor = barBackgroundColor; - - var controlToolbarBackground = Control.ToolbarBackground; - if (controlToolbarBackground == null && barBackgroundColor.IsDefault) return; - - var brush = GetBarBackgroundBrush(); - if (brush == controlToolbarBackground) return; - - TitleProvider.BarBackgroundBrush = brush; - - foreach (WGrid tabBarGrid in Control.GetDescendantsByName<WGrid>(TabBarHeaderGridName)) - { - tabBarGrid.Background = brush; - } - } - - void UpdateBarTextColor() - { - if (Element == null) return; - var barTextColor = Element.BarTextColor; - - if (barTextColor == _barTextColor) return; - _barTextColor = barTextColor; + Color _barBackgroundColor; + Color _barTextColor; + bool _disposed; + bool _showTitle; + VisualElementTracker<Page, Pivot> _tracker; - var controlToolbarForeground = Control.ToolbarForeground; - if (controlToolbarForeground == null && barTextColor.IsDefault) return; + ITitleProvider TitleProvider => this; - var brush = GetBarForegroundBrush(); - if (brush == controlToolbarForeground) - return; + public FormsPivot Control { get; private set; } - TitleProvider.BarForegroundBrush = brush; + public TabbedPage Element { get; private set; } - foreach (TextBlock tabBarTextBlock in Control.GetDescendantsByName<TextBlock>(TabBarHeaderTextBlockName)) - { - tabBarTextBlock.Foreground = brush; - } - } + protected VisualElementTracker<Page, Pivot> Tracker + { + get { return _tracker; } + set + { + if (_tracker == value) + return; - void UpdateBarVisibility() - { - Control.ToolbarVisibility = _showTitle ? Visibility.Visible : Visibility.Collapsed; - } - - void UpdateCurrentPage() - { - Page page = Element.CurrentPage; - - var nav = page as NavigationPage; - TitleProvider.ShowTitle = nav != null; - - if (page == null) - return; - - Control.SelectedItem = page; - } - } + if (_tracker != null) + _tracker.Dispose(); + + _tracker = value; + } + } + + public void Dispose() + { + Dispose(true); + } + + Brush ITitleProvider.BarBackgroundBrush + { + set { Control.ToolbarBackground = value; } + } + + Brush ITitleProvider.BarForegroundBrush + { + set { Control.ToolbarForeground = value; } + } + + IPageController PageController => Element as IPageController; + + bool ITitleProvider.ShowTitle + { + get { return _showTitle; } + + set + { + if (_showTitle == value) + return; + _showTitle = value; + + UpdateTitleVisibility(); + } + } + + string ITitleProvider.Title + { + get { return (string)Control?.Title; } + + set + { + if (Control != null && _showTitle) + Control.Title = value; + } + } + + public Task<CommandBar> GetCommandBarAsync() + { + return (Control as IToolbarProvider)?.GetCommandBarAsync(); + } + + public FrameworkElement ContainerElement + { + get { return Control; } + } + + VisualElement IVisualElementRenderer.Element + { + get { return Element; } + } + + public event EventHandler<VisualElementChangedEventArgs> ElementChanged; + + public SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint) + { + var constraint = new Windows.Foundation.Size(widthConstraint, heightConstraint); + + double oldWidth = Control.Width; + double oldHeight = Control.Height; + + Control.Height = double.NaN; + Control.Width = double.NaN; + + Control.Measure(constraint); + var result = new Size(Math.Ceiling(Control.DesiredSize.Width), Math.Ceiling(Control.DesiredSize.Height)); + + Control.Width = oldWidth; + Control.Height = oldHeight; + + return new SizeRequest(result); + } + + public void SetElement(VisualElement element) + { + if (element != null && !(element is TabbedPage)) + throw new ArgumentException("Element must be a TabbedPage", "element"); + + TabbedPage oldElement = Element; + Element = (TabbedPage)element; + + if (oldElement != null) + { + oldElement.PropertyChanged -= OnElementPropertyChanged; + ((INotifyCollectionChanged)oldElement.Children).CollectionChanged -= OnPagesChanged; + } + + if (element != null) + { + if (Control == null) + { + Control = new FormsPivot + { + Style = (Windows.UI.Xaml.Style)Windows.UI.Xaml.Application.Current.Resources["TabbedPageStyle"], + }; + + Control.SelectionChanged += OnSelectionChanged; + + Tracker = new BackgroundTracker<Pivot>(Windows.UI.Xaml.Controls.Control.BackgroundProperty) + { + Element = (Page)element, + Control = Control, + Container = Control + }; + + Control.Loaded += OnLoaded; + Control.Unloaded += OnUnloaded; + } + + Control.DataContext = Element; + OnPagesChanged(Element.Children, + new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); + + UpdateCurrentPage(); + UpdateToolbarPlacement(); + + ((INotifyCollectionChanged)Element.Children).CollectionChanged += OnPagesChanged; + element.PropertyChanged += OnElementPropertyChanged; + + if (!string.IsNullOrEmpty(element.AutomationId)) + Control.SetValue(AutomationProperties.AutomationIdProperty, element.AutomationId); + } + + OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); + } + + protected virtual void Dispose(bool disposing) + { + if (!disposing || _disposed) + return; + + _disposed = true; + PageController?.SendDisappearing(); + SetElement(null); + Tracker = null; + } + + protected virtual void OnElementChanged(VisualElementChangedEventArgs e) + { + EventHandler<VisualElementChangedEventArgs> changed = ElementChanged; + if (changed != null) + changed(this, e); + } + + void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == nameof(TabbedPage.CurrentPage)) + { + UpdateCurrentPage(); + UpdateBarTextColor(); + UpdateBarBackgroundColor(); + } + else if (e.PropertyName == TabbedPage.BarTextColorProperty.PropertyName) + UpdateBarTextColor(); + else if (e.PropertyName == TabbedPage.BarBackgroundColorProperty.PropertyName) + UpdateBarBackgroundColor(); + else if (e.PropertyName == PlatformConfiguration.WindowsSpecific.Page.ToolbarPlacementProperty.PropertyName) + UpdateToolbarPlacement(); + } + + void OnLoaded(object sender, RoutedEventArgs args) + { + PageController?.SendAppearing(); + UpdateBarTextColor(); + UpdateBarBackgroundColor(); + } + + void OnPagesChanged(object sender, NotifyCollectionChangedEventArgs e) + { + e.Apply(Element.Children, Control.Items); + + // Potential performance issue, UpdateLayout () is called for every page change + Control.UpdateLayout(); + } + + void OnSelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (Element == null) + return; + + Page page = e.AddedItems.Count > 0 ? (Page)e.AddedItems[0] : null; + Page currentPage = Element.CurrentPage; + if (currentPage == page) + return; + ((IPageController)currentPage)?.SendDisappearing(); + Element.CurrentPage = page; + ((IPageController)page)?.SendAppearing(); + } + + void OnUnloaded(object sender, RoutedEventArgs args) + { + PageController?.SendDisappearing(); + } + + Brush GetBarBackgroundBrush() + { + object defaultColor = + Windows.UI.Xaml.Application.Current.Resources["SystemControlBackgroundChromeMediumLowBrush"]; + if (Element.BarBackgroundColor.IsDefault && defaultColor != null) + return (Brush)defaultColor; + return Element.BarBackgroundColor.ToBrush(); + } + + Brush GetBarForegroundBrush() + { + object defaultColor = Windows.UI.Xaml.Application.Current.Resources["ApplicationForegroundThemeBrush"]; + if (Element.BarTextColor.IsDefault && defaultColor != null) + return (Brush)defaultColor; + return Element.BarTextColor.ToBrush(); + } + + void UpdateBarBackgroundColor() + { + if (Element == null) return; + var barBackgroundColor = Element.BarBackgroundColor; + + if (barBackgroundColor == _barBackgroundColor) return; + _barBackgroundColor = barBackgroundColor; + + var controlToolbarBackground = Control.ToolbarBackground; + if (controlToolbarBackground == null && barBackgroundColor.IsDefault) return; + + var brush = GetBarBackgroundBrush(); + if (brush == controlToolbarBackground) return; + + TitleProvider.BarBackgroundBrush = brush; + + foreach (WGrid tabBarGrid in Control.GetDescendantsByName<WGrid>(TabBarHeaderGridName)) + { + tabBarGrid.Background = brush; + } + } + + void UpdateBarTextColor() + { + if (Element == null) return; + var barTextColor = Element.BarTextColor; + + if (barTextColor == _barTextColor) return; + _barTextColor = barTextColor; + + var controlToolbarForeground = Control.ToolbarForeground; + if (controlToolbarForeground == null && barTextColor.IsDefault) return; + + var brush = GetBarForegroundBrush(); + if (brush == controlToolbarForeground) + return; + + TitleProvider.BarForegroundBrush = brush; + + foreach (TextBlock tabBarTextBlock in Control.GetDescendantsByName<TextBlock>(TabBarHeaderTextBlockName)) + { + tabBarTextBlock.Foreground = brush; + } + } + + void UpdateTitleVisibility() + { + Control.TitleVisibility = _showTitle ? Visibility.Visible : Visibility.Collapsed; + } + + void UpdateCurrentPage() + { + Page page = Element.CurrentPage; + + var nav = page as NavigationPage; + TitleProvider.ShowTitle = nav != null; + + if (page == null) + return; + + Control.SelectedItem = page; + } + + void UpdateToolbarPlacement() + { + Control.ToolbarPlacement = Element.OnThisPlatform().GetToolbarPlacement(); + } + } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.UAP/TabbedPageStyle.xaml b/Xamarin.Forms.Platform.UAP/TabbedPageStyle.xaml new file mode 100644 index 00000000..6d54a073 --- /dev/null +++ b/Xamarin.Forms.Platform.UAP/TabbedPageStyle.xaml @@ -0,0 +1,199 @@ +<ResourceDictionary + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:uwp="using:Xamarin.Forms.Platform.UWP"> + <Style x:Key="TabbedPageStyle" TargetType="uwp:FormsPivot"> + <Setter Property="HeaderTemplate"> + <Setter.Value> + <DataTemplate> + <TextBlock Name="TabbedPageHeaderTextBlock" Text="{Binding Title}" Style="{ThemeResource BodyTextBlockStyle}" /> + </DataTemplate> + </Setter.Value> + </Setter> + + <Setter Property="ItemTemplate"> + <Setter.Value> + <DataTemplate> + <uwp:TabbedPagePresenter Content="{Binding}" ContentTemplate="{ThemeResource ContainedPageTemplate}" /> + </DataTemplate> + </Setter.Value> + </Setter> + + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="uwp:FormsPivot"> + <Grid x:Name="RootElement" Background="{TemplateBinding Background}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}"> + + <Grid.RowDefinitions> + <RowDefinition Height="Auto"/> + <RowDefinition Height="*"/> + <RowDefinition Height="Auto"/> + </Grid.RowDefinitions> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="NavigationButtonsVisibility"> + <VisualState x:Name="NavigationButtonsHidden"/> + <VisualState x:Name="NavigationButtonsVisible"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="NextButton"> + <DiscreteObjectKeyFrame KeyTime="0" Value="1"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsEnabled" Storyboard.TargetName="NextButton"> + <DiscreteObjectKeyFrame KeyTime="0" Value="True"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PreviousButton"> + <DiscreteObjectKeyFrame KeyTime="0" Value="1"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsEnabled" Storyboard.TargetName="PreviousButton"> + <DiscreteObjectKeyFrame KeyTime="0" Value="True"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="HeaderStates"> + <VisualState x:Name="HeaderDynamic"/> + <VisualState x:Name="HeaderStatic"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="Header"> + <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="StaticHeader"> + <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + + <Grid x:Name="TitleBar" Background="{TemplateBinding ToolbarBackground}" HorizontalAlignment="Stretch"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="Auto"></ColumnDefinition> + <ColumnDefinition Width="*"></ColumnDefinition> + </Grid.ColumnDefinitions> + + <Border Height="{ThemeResource TitleBarHeight}" Visibility="{TemplateBinding TitleVisibility}"> + <TextBlock Text="{Binding Title}" VerticalAlignment="Center" Padding="10,0,0,0" Foreground="{TemplateBinding ToolbarForeground}" Style="{ThemeResource TitleTextBlockStyle}" /> + </Border> + + <Border x:Name="TopCommandBarArea" Grid.Column="1" HorizontalAlignment="Stretch"> + <uwp:FormsCommandBar x:Name="CommandBar" VerticalContentAlignment="Top" Background="{TemplateBinding ToolbarBackground}" Height="{ThemeResource TitleBarHeight}" /> + </Border> + </Grid> + + <Grid Grid.Row="1"> + <Grid.Resources> + <ControlTemplate x:Key="NextTemplate" TargetType="Button"> + <Border x:Name="Root" BorderBrush="{ThemeResource SystemControlForegroundTransparentBrush}" BorderThickness="{ThemeResource PivotNavButtonBorderThemeThickness}" Background="{ThemeResource SystemControlBackgroundBaseMediumLowBrush}"> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal"/> + <VisualState x:Name="PointerOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Root"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseMediumBrush}"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="Arrow"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltAltMediumHighBrush}"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Pressed"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Root"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseMediumHighBrush}"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="Arrow"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltAltMediumHighBrush}"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <FontIcon x:Name="Arrow" Foreground="{ThemeResource SystemControlForegroundAltMediumHighBrush}" FontSize="12" FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="" HorizontalAlignment="Center" MirroredWhenRightToLeft="True" UseLayoutRounding="False" VerticalAlignment="Center"/> + </Border> + </ControlTemplate> + <ControlTemplate x:Key="PreviousTemplate" TargetType="Button"> + <Border x:Name="Root" BorderBrush="{ThemeResource SystemControlForegroundTransparentBrush}" BorderThickness="{ThemeResource PivotNavButtonBorderThemeThickness}" Background="{ThemeResource SystemControlBackgroundBaseMediumLowBrush}"> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal"/> + <VisualState x:Name="PointerOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Root"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseMediumBrush}"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="Arrow"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltAltMediumHighBrush}"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Pressed"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Root"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseMediumHighBrush}"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="Arrow"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltAltMediumHighBrush}"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <FontIcon x:Name="Arrow" Foreground="{ThemeResource SystemControlForegroundAltMediumHighBrush}" FontSize="12" FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="" HorizontalAlignment="Center" MirroredWhenRightToLeft="True" UseLayoutRounding="False" VerticalAlignment="Center"/> + </Border> + </ControlTemplate> + </Grid.Resources> + <ScrollViewer x:Name="ScrollViewer" BringIntoViewOnFocusChange="False" HorizontalSnapPointsAlignment="Center" HorizontalSnapPointsType="MandatorySingle" HorizontalScrollBarVisibility="Hidden" Margin="{TemplateBinding Padding}" Template="{StaticResource ScrollViewerScrollBarlessTemplate}" VerticalSnapPointsType="None" VerticalScrollBarVisibility="Disabled" VerticalScrollMode="Disabled" VerticalContentAlignment="Stretch" ZoomMode="Disabled"> + <PivotPanel x:Name="Panel" VerticalAlignment="Stretch"> + <Grid x:Name="PivotLayoutElement"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="Auto"/> + <ColumnDefinition Width="*"/> + <ColumnDefinition Width="Auto"/> + </Grid.ColumnDefinitions> + <Grid.RowDefinitions> + <RowDefinition Height="Auto"/> + <RowDefinition Height="*"/> + </Grid.RowDefinitions> + <Grid.RenderTransform> + <CompositeTransform x:Name="PivotLayoutElementTranslateTransform"/> + </Grid.RenderTransform> + <ContentPresenter x:Name="LeftHeaderPresenter" ContentTemplate="{TemplateBinding LeftHeaderTemplate}" Content="{TemplateBinding LeftHeader}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> + <ContentControl x:Name="HeaderClipper" Grid.Column="1" HorizontalContentAlignment="Stretch" UseSystemFocusVisuals="True"> + <ContentControl.Clip> + <RectangleGeometry x:Name="HeaderClipperGeometry"/> + </ContentControl.Clip> + <Grid Name="TabbedPageHeaderGrid" Background="{TemplateBinding ToolbarBackground}"> + <PivotHeaderPanel x:Name="StaticHeader" Visibility="Collapsed"/> + <PivotHeaderPanel x:Name="Header"> + <PivotHeaderPanel.RenderTransform> + <TransformGroup> + <CompositeTransform x:Name="HeaderTranslateTransform"/> + <CompositeTransform x:Name="HeaderOffsetTranslateTransform"/> + </TransformGroup> + </PivotHeaderPanel.RenderTransform> + </PivotHeaderPanel> + </Grid> + </ContentControl> + <Button x:Name="PreviousButton" Background="Transparent" Grid.Column="1" HorizontalAlignment="Left" Height="36" IsTabStop="False" IsEnabled="False" Margin="{ThemeResource PivotNavButtonMargin}" Opacity="0" Template="{StaticResource PreviousTemplate}" UseSystemFocusVisuals="False" VerticalAlignment="Top" Width="20"/> + <Button x:Name="NextButton" Background="Transparent" Grid.Column="1" HorizontalAlignment="Right" Height="36" IsTabStop="False" IsEnabled="False" Margin="{ThemeResource PivotNavButtonMargin}" Opacity="0" Template="{StaticResource NextTemplate}" UseSystemFocusVisuals="False" VerticalAlignment="Top" Width="20"/> + <ContentPresenter x:Name="RightHeaderPresenter" ContentTemplate="{TemplateBinding RightHeaderTemplate}" Content="{TemplateBinding RightHeader}" Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> + <ItemsPresenter x:Name="PivotItemPresenter" Grid.ColumnSpan="3" Grid.Row="1"> + <ItemsPresenter.RenderTransform> + <TransformGroup> + <TranslateTransform x:Name="ItemsPresenterTranslateTransform"/> + <CompositeTransform x:Name="ItemsPresenterCompositeTransform"/> + </TransformGroup> + </ItemsPresenter.RenderTransform> + </ItemsPresenter> + </Grid> + </PivotPanel> + </ScrollViewer> + </Grid> + + <Border x:Name="BottomCommandBarArea" Grid.Row="2" HorizontalAlignment="Stretch"></Border> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> +</ResourceDictionary>
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.UAP/ToolbarPlacementHelper.cs b/Xamarin.Forms.Platform.UAP/ToolbarPlacementHelper.cs new file mode 100644 index 00000000..24feecbc --- /dev/null +++ b/Xamarin.Forms.Platform.UAP/ToolbarPlacementHelper.cs @@ -0,0 +1,46 @@ +using Windows.UI.Xaml.Controls; +using Xamarin.Forms.PlatformConfiguration.WindowsSpecific; + +namespace Xamarin.Forms.Platform.UWP +{ + internal class ToolbarPlacementHelper + { + public static void UpdateToolbarPlacement(CommandBar toolbar, ToolbarPlacement toolbarPlacement, Border bottomCommandBarArea, Border topCommandBarArea) + { + if (toolbar == null || bottomCommandBarArea == null || topCommandBarArea == null) + { + // Haven't applied the template yet, so we're not ready to do this + return; + } + + // Figure out what's hosting the command bar right now + var current = toolbar.Parent as Border; + + // And figure out where it should be + Border target; + + switch (toolbarPlacement) + { + case ToolbarPlacement.Top: + target = topCommandBarArea; + break; + case ToolbarPlacement.Bottom: + target = bottomCommandBarArea; + break; + case ToolbarPlacement.Default: + default: + target = Device.Idiom == TargetIdiom.Phone ? bottomCommandBarArea : topCommandBarArea; + break; + } + + if (current == null || target == null || current == target) + { + return; + } + + // Remove the command bar from its current host and add it to the new one + current.Child = null; + target.Child = toolbar; + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.UAP/Xamarin.Forms.Platform.UAP.csproj b/Xamarin.Forms.Platform.UAP/Xamarin.Forms.Platform.UAP.csproj index 4e804819..ce1b1066 100644 --- a/Xamarin.Forms.Platform.UAP/Xamarin.Forms.Platform.UAP.csproj +++ b/Xamarin.Forms.Platform.UAP/Xamarin.Forms.Platform.UAP.csproj @@ -164,6 +164,9 @@ <Compile Include="..\Xamarin.Forms.Platform.WinRT\NativeViewWrapperRenderer.cs"> <Link>NativeViewWrapperRenderer.cs</Link> </Compile> + <Compile Include="..\Xamarin.Forms.Platform.WinRT\PlatformConfigurationExtensions.cs"> + <Link>PlatformConfigurationExtensions.cs</Link> + </Compile> <Compile Include="..\Xamarin.Forms.Platform.WinRT\PlatformEffect.cs"> <Link>PlatformEffect.cs</Link> </Compile> @@ -183,6 +186,7 @@ </Compile> <Compile Include="StepperControl.cs" /> <Compile Include="TabbedPageRenderer.cs" /> + <Compile Include="ToolbarPlacementHelper.cs" /> <Content Include="Properties\Xamarin.Forms.Platform.UAP.rd.xml" /> <Compile Include="..\Xamarin.Forms.Core\Properties\GlobalAssemblyInfo.cs"> <Link>Properties\GlobalAssemblyInfo.cs</Link> @@ -432,14 +436,26 @@ <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> + <Page Include="MasterDetailControlStyle.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> <Page Include="PageControl.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> + <Page Include="PageControlStyle.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> <Page Include="Resources.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </Page> + <Page Include="TabbedPageStyle.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> </ItemGroup> <ItemGroup> <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj"> diff --git a/Xamarin.Forms.Platform.WinRT.Phone/FormsPivot.cs b/Xamarin.Forms.Platform.WinRT.Phone/FormsPivot.cs index a2e765b3..b06acb1f 100644 --- a/Xamarin.Forms.Platform.WinRT.Phone/FormsPivot.cs +++ b/Xamarin.Forms.Platform.WinRT.Phone/FormsPivot.cs @@ -2,6 +2,7 @@ using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media; +using Xamarin.Forms.PlatformConfiguration.WindowsSpecific; #if WINDOWS_UWP @@ -12,7 +13,7 @@ namespace Xamarin.Forms.Platform.WinRT { public class FormsPivot : Pivot, IToolbarProvider { - public static readonly DependencyProperty ToolbarVisibilityProperty = DependencyProperty.Register(nameof(ToolbarVisibility), typeof(Visibility), typeof(FormsPivot), + public static readonly DependencyProperty TitleVisibilityProperty = DependencyProperty.Register(nameof(TitleVisibility), typeof(Visibility), typeof(FormsPivot), new PropertyMetadata(Visibility.Collapsed)); public static readonly DependencyProperty ToolbarForegroundProperty = DependencyProperty.Register(nameof(ToolbarForeground), typeof(Brush), typeof(FormsPivot), new PropertyMetadata(default(Brush))); @@ -20,10 +21,14 @@ namespace Xamarin.Forms.Platform.WinRT public static readonly DependencyProperty ToolbarBackgroundProperty = DependencyProperty.Register(nameof(ToolbarBackground), typeof(Brush), typeof(FormsPivot), new PropertyMetadata(default(Brush))); CommandBar _commandBar; - +#if WINDOWS_UWP + Border _bottomCommandBarArea; + Border _topCommandBarArea; +#endif TaskCompletionSource<CommandBar> _commandBarTcs; + ToolbarPlacement _toolbarPlacement; - public Brush ToolbarBackground + public Brush ToolbarBackground { get { return (Brush)GetValue(ToolbarBackgroundProperty); } set { SetValue(ToolbarBackgroundProperty, value); } @@ -35,12 +40,24 @@ namespace Xamarin.Forms.Platform.WinRT set { SetValue(ToolbarForegroundProperty, value); } } - public Visibility ToolbarVisibility + public Visibility TitleVisibility { - get { return (Visibility)GetValue(ToolbarVisibilityProperty); } - set { SetValue(ToolbarVisibilityProperty, value); } + get { return (Visibility)GetValue(TitleVisibilityProperty); } + set { SetValue(TitleVisibilityProperty, value); } } + public ToolbarPlacement ToolbarPlacement + { + get { return _toolbarPlacement; } + set + { + _toolbarPlacement = value; +#if WINDOWS_UWP + UpdateToolbarPlacement(); +#endif + } + } + Task<CommandBar> IToolbarProvider.GetCommandBarAsync() { if (_commandBar != null) @@ -54,12 +71,24 @@ namespace Xamarin.Forms.Platform.WinRT protected override void OnApplyTemplate() { base.OnApplyTemplate(); + _commandBar = GetTemplateChild("CommandBar") as CommandBar; + +#if WINDOWS_UWP + _bottomCommandBarArea = GetTemplateChild("BottomCommandBarArea") as Border; + _topCommandBarArea = GetTemplateChild("TopCommandBarArea") as Border; + UpdateToolbarPlacement(); +#endif + TaskCompletionSource<CommandBar> tcs = _commandBarTcs; - if (tcs != null) - { - tcs.SetResult(_commandBar); - } + tcs?.SetResult(_commandBar); } + +#if WINDOWS_UWP + void UpdateToolbarPlacement() + { + ToolbarPlacementHelper.UpdateToolbarPlacement(_commandBar, ToolbarPlacement, _bottomCommandBarArea, _topCommandBarArea); + } +#endif } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.WinRT.Phone/PhoneResources.xaml b/Xamarin.Forms.Platform.WinRT.Phone/PhoneResources.xaml index b693a226..41ec603d 100644 --- a/Xamarin.Forms.Platform.WinRT.Phone/PhoneResources.xaml +++ b/Xamarin.Forms.Platform.WinRT.Phone/PhoneResources.xaml @@ -436,7 +436,8 @@ <RowDefinition Height="*" /> </Grid.RowDefinitions> - <Grid Height="79" Background="{TemplateBinding NavigationBarBackground}" Visibility="{Binding ShowNavigationBar,RelativeSource={RelativeSource Mode=TemplatedParent},Converter={StaticResource BoolVisibilityConverter}}"> + <Grid Height="79" Background="{TemplateBinding NavigationBarBackground}" + Visibility="{TemplateBinding TitleVisibility}"> <TextBlock Margin="10,0,0,0" Name="title" Foreground="{TemplateBinding TitleBrush}" VerticalAlignment="Center" Style="{ThemeResource HeaderTextBlockStyle}" Text="{Binding Title}" /> </Grid> <ContentPresenter x:Name="presenter" Grid.Row="1" ContentTransitions="{TemplateBinding ContentTransitions}" /> diff --git a/Xamarin.Forms.Platform.WinRT.Phone/TabbedPageRenderer.cs b/Xamarin.Forms.Platform.WinRT.Phone/TabbedPageRenderer.cs index df4fba71..b6731ce9 100644 --- a/Xamarin.Forms.Platform.WinRT.Phone/TabbedPageRenderer.cs +++ b/Xamarin.Forms.Platform.WinRT.Phone/TabbedPageRenderer.cs @@ -187,7 +187,7 @@ namespace Xamarin.Forms.Platform.WinRT return; _showTitle = value; - Control.ToolbarVisibility = _showTitle ? Visibility.Visible : Visibility.Collapsed; + Control.TitleVisibility = _showTitle ? Visibility.Visible : Visibility.Collapsed; } } diff --git a/Xamarin.Forms.Platform.WinRT.Tablet/TabletResources.xaml b/Xamarin.Forms.Platform.WinRT.Tablet/TabletResources.xaml index 9dad373a..a57b4f0a 100644 --- a/Xamarin.Forms.Platform.WinRT.Tablet/TabletResources.xaml +++ b/Xamarin.Forms.Platform.WinRT.Tablet/TabletResources.xaml @@ -327,7 +327,8 @@ <RowDefinition Height="*" /> </Grid.RowDefinitions> - <Grid Grid.Row="0" Grid.Column="0" Height="79" VerticalAlignment="Center" Background="{TemplateBinding NavigationBarBackground}" Visibility="{Binding ShowNavigationBar,RelativeSource={RelativeSource Mode=TemplatedParent},Converter={StaticResource BoolVisibilityConverter}}"> + <Grid Grid.Row="0" Grid.Column="0" Height="79" VerticalAlignment="Center" Background="{TemplateBinding NavigationBarBackground}" + Visibility="{TemplateBinding TitleVisibility}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" MinWidth="{Binding TitleInset,RelativeSource={RelativeSource TemplatedParent}}" /> <ColumnDefinition Width="*" /> diff --git a/Xamarin.Forms.Platform.WinRT/NavigationPageRenderer.cs b/Xamarin.Forms.Platform.WinRT/NavigationPageRenderer.cs index df0c023d..30a74877 100644 --- a/Xamarin.Forms.Platform.WinRT/NavigationPageRenderer.cs +++ b/Xamarin.Forms.Platform.WinRT/NavigationPageRenderer.cs @@ -13,6 +13,8 @@ using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Media.Animation; using Xamarin.Forms.Internals; +using Xamarin.Forms.PlatformConfiguration.WindowsSpecific; + #if WINDOWS_UWP using Windows.UI.Xaml.Data; using Windows.UI.Core; @@ -72,7 +74,7 @@ namespace Xamarin.Forms.Platform.WinRT { set { - _container.NavigationBarBackground = value; + _container.ToolbarBackground = value; UpdateTitleOnParents(); } } @@ -97,7 +99,7 @@ namespace Xamarin.Forms.Platform.WinRT return; _showTitle = value; - UpdateNavigationBarVisible(); + UpdateTitleVisible(); UpdateTitleOnParents(); } } @@ -187,6 +189,7 @@ namespace Xamarin.Forms.Platform.WinRT LookupRelevantParents(); UpdateTitleColor(); UpdateNavigationBarBackground(); + UpdateToolbarPlacement(); Element.PropertyChanged += OnElementPropertyChanged; ((INavigationPageController)Element).PushRequested += OnPushRequested; ((INavigationPageController)Element).PopRequested += OnPopRequested; @@ -258,6 +261,7 @@ namespace Xamarin.Forms.Platform.WinRT return Element.BarTextColor.ToBrush(); } + // TODO EZH Why don't this and GetToolBarProvider ever get called on either platform? Task<CommandBar> GetCommandBarAsync() { var platform = (Platform)Element.Platform; @@ -332,7 +336,7 @@ namespace Xamarin.Forms.Platform.WinRT else if (e.PropertyName == NavigationPage.BackButtonTitleProperty.PropertyName) UpdateBackButtonTitle(); else if (e.PropertyName == NavigationPage.HasNavigationBarProperty.PropertyName) - UpdateNavigationBarVisible(); + UpdateTitleVisible(); } void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) @@ -343,6 +347,8 @@ namespace Xamarin.Forms.Platform.WinRT UpdateNavigationBarBackground(); else if (e.PropertyName == Page.PaddingProperty.PropertyName) UpdatePadding(); + else if (e.PropertyName == PlatformConfiguration.WindowsSpecific.Page.ToolbarPlacementProperty.PropertyName) + UpdateToolbarPlacement(); } void OnLoaded(object sender, RoutedEventArgs args) @@ -434,7 +440,7 @@ namespace Xamarin.Forms.Platform.WinRT IVisualElementRenderer renderer = page.GetOrCreateRenderer(); - UpdateNavigationBarVisible(); + UpdateTitleVisible(); UpdateTitleOnParents(); if (isAnimated && _transition == null) @@ -484,16 +490,16 @@ namespace Xamarin.Forms.Platform.WinRT (this as ITitleProvider).BarBackgroundBrush = GetBarBackgroundBrush(); } - void UpdateNavigationBarVisible() + void UpdateTitleVisible() { UpdateTitleOnParents(); - bool showing = _container.ShowNavigationBar; - bool newValue = GetIsNavBarPossible() && NavigationPage.GetHasNavigationBar(_currentPage); + bool showing = _container.TitleVisibility == Visibility.Visible; + bool newValue = GetIsNavBarPossible() && NavigationPage.GetHasNavigationBar(_currentPage) && !string.IsNullOrEmpty(_currentPage.Title); if (showing == newValue) return; - _container.ShowNavigationBar = newValue; + _container.TitleVisibility = newValue ? Visibility.Visible : Visibility.Collapsed; // Force ContentHeight/Width to update, doesn't work from inside PageControl for some reason _container.UpdateLayout(); @@ -510,6 +516,18 @@ namespace Xamarin.Forms.Platform.WinRT (this as ITitleProvider).BarForegroundBrush = GetBarForegroundBrush(); } + void UpdateToolbarPlacement() + { +#if WINDOWS_UWP + if (_container == null) + { + return; + } + + _container.ToolbarPlacement = Element.OnThisPlatform().GetToolbarPlacement(); +#endif + } + #pragma warning disable 1998 // considered for removal async void UpdateTitleOnParents() #pragma warning restore 1998 diff --git a/Xamarin.Forms.Platform.WinRT/PageControl.xaml.cs b/Xamarin.Forms.Platform.WinRT/PageControl.xaml.cs index 0991db42..7be51c05 100644 --- a/Xamarin.Forms.Platform.WinRT/PageControl.xaml.cs +++ b/Xamarin.Forms.Platform.WinRT/PageControl.xaml.cs @@ -1,7 +1,10 @@ -using System.Threading.Tasks; +using System.ComponentModel; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media; +using Xamarin.Forms.PlatformConfiguration.WindowsSpecific; #if WINDOWS_UWP @@ -11,7 +14,7 @@ namespace Xamarin.Forms.Platform.UWP namespace Xamarin.Forms.Platform.WinRT #endif { - public sealed partial class PageControl : IToolbarProvider + public sealed partial class PageControl : IToolbarProvider { public static readonly DependencyProperty InvisibleBackButtonCollapsedProperty = DependencyProperty.Register("InvisibleBackButtonCollapsed", typeof(bool), typeof(PageControl), new PropertyMetadata(true, OnInvisibleBackButtonCollapsedChanged)); @@ -19,9 +22,9 @@ namespace Xamarin.Forms.Platform.WinRT public static readonly DependencyProperty ShowBackButtonProperty = DependencyProperty.Register("ShowBackButton", typeof(bool), typeof(PageControl), new PropertyMetadata(false, OnShowBackButtonChanged)); - public static readonly DependencyProperty ShowNavigationBarProperty = DependencyProperty.Register("ShowNavigationBar", typeof(bool), typeof(PageControl), new PropertyMetadata(true)); + public static readonly DependencyProperty TitleVisibilityProperty = DependencyProperty.Register(nameof(TitleVisibility), typeof(Visibility), typeof(PageControl), new PropertyMetadata(Visibility.Visible)); - public static readonly DependencyProperty NavigationBarBackgroundProperty = DependencyProperty.Register("NavigationBarBackground", typeof(Brush), typeof(PageControl), + public static readonly DependencyProperty ToolbarBackgroundProperty = DependencyProperty.Register(nameof(ToolbarBackground), typeof(Brush), typeof(PageControl), new PropertyMetadata(default(Brush))); public static readonly DependencyProperty BackButtonTitleProperty = DependencyProperty.Register("BackButtonTitle", typeof(string), typeof(PageControl), new PropertyMetadata(false)); @@ -36,10 +39,17 @@ namespace Xamarin.Forms.Platform.WinRT AppBarButton _backButton; CommandBar _commandBar; - TaskCompletionSource<CommandBar> _commandBarTcs; +#if WINDOWS_UWP + ToolbarPlacement _toolbarPlacement; + Border _bottomCommandBarArea; + Border _topCommandBarArea; +#endif + + TaskCompletionSource<CommandBar> _commandBarTcs; Windows.UI.Xaml.Controls.ContentPresenter _presenter; + - public PageControl() + public PageControl() { InitializeComponent(); } @@ -72,22 +82,34 @@ namespace Xamarin.Forms.Platform.WinRT set { SetValue(InvisibleBackButtonCollapsedProperty, value); } } - public Brush NavigationBarBackground + public Brush ToolbarBackground { - get { return (Brush)GetValue(NavigationBarBackgroundProperty); } - set { SetValue(NavigationBarBackgroundProperty, value); } + get { return (Brush)GetValue(ToolbarBackgroundProperty); } + set { SetValue(ToolbarBackgroundProperty, value); } } +#if WINDOWS_UWP + public ToolbarPlacement ToolbarPlacement + { + get { return _toolbarPlacement; } + set + { + _toolbarPlacement = value; + UpdateToolbarPlacement(); + } + } +#endif + public bool ShowBackButton { get { return (bool)GetValue(ShowBackButtonProperty); } set { SetValue(ShowBackButtonProperty, value); } } - public bool ShowNavigationBar + public Visibility TitleVisibility { - get { return (bool)GetValue(ShowNavigationBarProperty); } - set { SetValue(ShowNavigationBarProperty, value); } + get { return (Visibility)GetValue(TitleVisibilityProperty); } + set { SetValue(TitleVisibilityProperty, value); } } public Brush TitleBrush @@ -125,12 +147,14 @@ namespace Xamarin.Forms.Platform.WinRT _presenter = GetTemplateChild("presenter") as Windows.UI.Xaml.Controls.ContentPresenter; _commandBar = GetTemplateChild("CommandBar") as CommandBar; +#if WINDOWS_UWP + _bottomCommandBarArea = GetTemplateChild("BottomCommandBarArea") as Border; + _topCommandBarArea = GetTemplateChild("TopCommandBarArea") as Border; + UpdateToolbarPlacement(); +#endif TaskCompletionSource<CommandBar> tcs = _commandBarTcs; - if (tcs != null) - { - tcs.SetResult(_commandBar); - } + tcs?.SetResult(_commandBar); } void OnBackClicked(object sender, RoutedEventArgs e) @@ -162,5 +186,12 @@ namespace Xamarin.Forms.Platform.WinRT _backButton.Opacity = ShowBackButton ? 1 : 0; } - } + +#if WINDOWS_UWP + void UpdateToolbarPlacement() + { + ToolbarPlacementHelper.UpdateToolbarPlacement(_commandBar, ToolbarPlacement, _bottomCommandBarArea, _topCommandBarArea); + } +#endif + } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.WinRT/Platform.cs b/Xamarin.Forms.Platform.WinRT/Platform.cs index e780d95a..c16c896b 100644 --- a/Xamarin.Forms.Platform.WinRT/Platform.cs +++ b/Xamarin.Forms.Platform.WinRT/Platform.cs @@ -506,8 +506,8 @@ namespace Xamarin.Forms.Platform.WinRT return _page.BottomAppBar as CommandBar; #else IToolbarProvider provider = GetToolbarProvider(); - var titleProvider = provider as ITitleProvider; - if (provider == null || (titleProvider != null && !titleProvider.ShowTitle)) + //var titleProvider = provider as ITitleProvider; + if (provider == null) // || (titleProvider != null && !titleProvider.ShowTitle)) return null; return await provider.GetCommandBarAsync(); @@ -521,6 +521,7 @@ namespace Xamarin.Forms.Platform.WinRT _page.BottomAppBar = commandBar; return commandBar; #else + var bar = new FormsCommandBar(); if (Device.Idiom != TargetIdiom.Phone) bar.Style = (Windows.UI.Xaml.Style)Windows.UI.Xaml.Application.Current.Resources["TitleToolbar"]; diff --git a/Xamarin.Forms.Platform.WinRT/PlatformConfigurationExtensions.cs b/Xamarin.Forms.Platform.WinRT/PlatformConfigurationExtensions.cs new file mode 100644 index 00000000..f488c3c2 --- /dev/null +++ b/Xamarin.Forms.Platform.WinRT/PlatformConfigurationExtensions.cs @@ -0,0 +1,17 @@ +#if WINDOWS_UWP + +namespace Xamarin.Forms.Platform.UWP +#else + +namespace Xamarin.Forms.Platform.WinRT +#endif +{ + public static class PlatformConfigurationExtensions + { + public static IPlatformElementConfiguration<PlatformConfiguration.Windows, T> OnThisPlatform<T>(this T element) + where T : Element, IElementConfiguration<T> + { + return (element).On<PlatformConfiguration.Windows>(); + } + } +} diff --git a/Xamarin.Forms.Platform.WinRT/Xamarin.Forms.Platform.WinRT.csproj b/Xamarin.Forms.Platform.WinRT/Xamarin.Forms.Platform.WinRT.csproj index 400737d0..fd73aae0 100644 --- a/Xamarin.Forms.Platform.WinRT/Xamarin.Forms.Platform.WinRT.csproj +++ b/Xamarin.Forms.Platform.WinRT/Xamarin.Forms.Platform.WinRT.csproj @@ -66,6 +66,7 @@ <Compile Include="..\Xamarin.Forms.Core\Properties\GlobalAssemblyInfo.cs"> <Link>Properties\GlobalAssemblyInfo.cs</Link> </Compile> + <Compile Include="PlatformConfigurationExtensions.cs" /> </ItemGroup> <ItemGroup Condition=" '$(OS)' != 'Unix' "> <Compile Include="BrushHelpers.cs" /> diff --git a/Xamarin.Forms.Platform.iOS/Extensions/PlatformConfigurationExtensions.cs b/Xamarin.Forms.Platform.iOS/Extensions/PlatformConfigurationExtensions.cs new file mode 100644 index 00000000..f61837f2 --- /dev/null +++ b/Xamarin.Forms.Platform.iOS/Extensions/PlatformConfigurationExtensions.cs @@ -0,0 +1,11 @@ +namespace Xamarin.Forms.Platform.iOS +{ + public static class PlatformConfigurationExtensions + { + public static IPlatformElementConfiguration<PlatformConfiguration.iOS, T> OnThisPlatform<T>(this T element) + where T : Element, IElementConfiguration<T> + { + return (element).On<PlatformConfiguration.iOS>(); + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.iOS/Renderers/BoxRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/BoxRenderer.cs index ad408c1f..20e9c38b 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/BoxRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/BoxRenderer.cs @@ -1,5 +1,6 @@ using System.ComponentModel; using System.Drawing; +using Xamarin.Forms.PlatformConfiguration.iOSSpecific; #if __UNIFIED__ using UIKit; using CoreGraphics; @@ -23,7 +24,6 @@ namespace Xamarin.Forms.Platform.iOS public class BoxRenderer : VisualElementRenderer<BoxView> { UIColor _colorToRenderer; - SizeF _previousSize; public override void Draw(RectangleF rect) diff --git a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs index 271291d6..c4186880 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs @@ -7,7 +7,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using Xamarin.Forms.Internals; - +using Xamarin.Forms.PlatformConfiguration.iOSSpecific; #if __UNIFIED__ using UIKit; using CoreGraphics; @@ -21,9 +21,9 @@ using SizeF = CoreGraphics.CGSize; using PointF = CoreGraphics.CGPoint; #else -using nfloat=System.Single; -using nint=System.Int32; -using nuint=System.UInt32; +using nfloat = System.Single; +using nint = System.Int32; +using nuint = System.UInt32; #endif namespace Xamarin.Forms.Platform.iOS @@ -49,6 +49,8 @@ namespace Xamarin.Forms.Platform.iOS var parentingViewController = (ParentingViewController)ViewControllers.Last(); UpdateLeftBarButtonItem(parentingViewController); }); + + } Page Current { get; set; } @@ -181,7 +183,10 @@ namespace Xamarin.Forms.Platform.iOS base.ViewDidLoad(); if (Forms.IsiOS7OrNewer) - NavigationBar.Translucent = false; + { + + UpdateTranslucent(); + } else WantsFullScreenLayout = false; @@ -437,6 +442,18 @@ namespace Xamarin.Forms.Platform.iOS UpdateBackgroundColor(); else if (e.PropertyName == NavigationPage.CurrentPageProperty.PropertyName) Current = ((NavigationPage)Element).CurrentPage; + else if (e.PropertyName == PlatformConfiguration.iOSSpecific.NavigationPage.IsNavigationBarTranslucentProperty.PropertyName) + UpdateTranslucent(); + } + + void UpdateTranslucent() + { + if (!Forms.IsiOS7OrNewer) + { + return; + } + + NavigationBar.Translucent = ((NavigationPage)Element).OnThisPlatform().IsNavigationBarTranslucent(); } void InsertPageBefore(Page page, Page before) @@ -481,7 +498,7 @@ namespace Xamarin.Forms.Platform.iOS if (page == null) throw new ArgumentNullException("page"); if (page == Current) - throw new NotSupportedException(); // should never happen as NavPage protecs against this + throw new NotSupportedException(); // should never happen as NavPage protects against this var target = Platform.GetRenderer(page).ViewController.ParentViewController; @@ -807,6 +824,7 @@ namespace Xamarin.Forms.Platform.iOS public override void ViewWillAppear(bool animated) { UpdateNavigationBarVisibility(animated); + EdgesForExtendedLayout = UIRectEdge.None; base.ViewWillAppear(animated); } diff --git a/Xamarin.Forms.Platform.iOS/VisualElementRenderer.cs b/Xamarin.Forms.Platform.iOS/VisualElementRenderer.cs index ab212b21..d4da0930 100644 --- a/Xamarin.Forms.Platform.iOS/VisualElementRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/VisualElementRenderer.cs @@ -4,6 +4,8 @@ using System.Collections.ObjectModel; using System.Collections.Specialized; using System.Drawing; using System.ComponentModel; +using Xamarin.Forms.PlatformConfiguration.iOSSpecific; + #if __UNIFIED__ using UIKit; #else @@ -13,6 +15,7 @@ using MonoTouch.UIKit; using RectangleF = CoreGraphics.CGRect; using SizeF = CoreGraphics.CGSize; using PointF = CoreGraphics.CGPoint; +using CoreGraphics; #else using nfloat=System.Single; @@ -44,6 +47,9 @@ namespace Xamarin.Forms.Platform.iOS VisualElementPackager _packager; VisualElementTracker _tracker; + UIVisualEffectView _blur; + BlurEffectStyle _previousBlur; + protected VisualElementRenderer() : base(RectangleF.Empty) { _propertyChangedHandler = OnElementPropertyChanged; @@ -180,6 +186,17 @@ namespace Xamarin.Forms.Platform.iOS return new SizeF(0, 0); } + public override void Draw(RectangleF rect) + { + base.Draw(rect); + if (_blur != null) + { + _blur.Frame = rect; + if (_blur.Superview == null) + Superview.Add(_blur); + } + } + protected override void Dispose(bool disposing) { if ((_flags & VisualElementRendererFlags.Disposed) != 0) @@ -220,6 +237,9 @@ namespace Xamarin.Forms.Platform.iOS var changed = ElementChanged; if (changed != null) changed(this, e); + + if (e.NewElement != null) + SetBlur((BlurEffectStyle)e.NewElement.GetValue(PlatformConfiguration.iOSSpecific.VisualElement.BlurEffectProperty)); } protected virtual void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) @@ -228,6 +248,8 @@ namespace Xamarin.Forms.Platform.iOS SetBackgroundColor(Element.BackgroundColor); else if (e.PropertyName == Layout.IsClippedToBoundsProperty.PropertyName) UpdateClipToBounds(); + else if (e.PropertyName == PlatformConfiguration.iOSSpecific.VisualElement.BlurEffectProperty.PropertyName) + SetBlur((BlurEffectStyle)Element.GetValue(PlatformConfiguration.iOSSpecific.VisualElement.BlurEffectProperty)); } protected virtual void OnRegisterEffect(PlatformEffect effect) @@ -248,6 +270,44 @@ namespace Xamarin.Forms.Platform.iOS BackgroundColor = color.ToUIColor(); } + protected virtual void SetBlur(BlurEffectStyle blur) + { + if (_previousBlur == blur) + return; + + _previousBlur = blur; + + if (_blur != null) + { + _blur.RemoveFromSuperview(); + _blur = null; + } + + if (blur == BlurEffectStyle.None) + { + SetNeedsDisplay(); + return; + } + + UIBlurEffect blurEffect; + switch (blur) + { + default: + case BlurEffectStyle.ExtraLight: + blurEffect = UIBlurEffect.FromStyle(UIBlurEffectStyle.ExtraLight); + break; + case BlurEffectStyle.Light: + blurEffect = UIBlurEffect.FromStyle(UIBlurEffectStyle.Light); + break; + case BlurEffectStyle.Dark: + blurEffect = UIBlurEffect.FromStyle(UIBlurEffectStyle.Dark); + break; + } + + _blur = new UIVisualEffectView(blurEffect); + SetNeedsDisplay(); + } + protected virtual void UpdateNativeWidget() { } diff --git a/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS.Classic.csproj b/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS.Classic.csproj index 285660e6..5b705d01 100644 --- a/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS.Classic.csproj +++ b/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS.Classic.csproj @@ -69,6 +69,7 @@ <Compile Include="ContextScrollViewDelegate.cs" /> <Compile Include="EffectUtilities.cs" /> <Compile Include="Extensions\CellExtensions.cs" /> + <Compile Include="Extensions\PlatformConfigurationExtensions.cs" /> <Compile Include="Forms.cs" /> <Compile Include="GlobalCloseContextGestureRecognizer.cs" /> <Compile Include="Extensions\ArrayExtensions.cs" /> diff --git a/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS.csproj b/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS.csproj index 3ed36e7f..d2364175 100644 --- a/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS.csproj +++ b/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS.csproj @@ -133,6 +133,7 @@ <Compile Include="ExportImageSourceHandlerAttribute.cs" /> <Compile Include="ExportRendererAttribute.cs" /> <Compile Include="Extensions\ArrayExtensions.cs" /> + <Compile Include="Extensions\PlatformConfigurationExtensions.cs" /> <Compile Include="NativeViewWrapper.cs" /> <Compile Include="NativeViewWrapperRenderer.cs" /> <Compile Include="PlatformEffect.cs" /> diff --git a/Xamarin.Forms.Xaml.UnitTests/PlatformSpecifics.xaml b/Xamarin.Forms.Xaml.UnitTests/PlatformSpecifics.xaml new file mode 100644 index 00000000..b6bd7e01 --- /dev/null +++ b/Xamarin.Forms.Xaml.UnitTests/PlatformSpecifics.xaml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<forms:MasterDetailPage xmlns="clr-namespace:Xamarin.Forms.Xaml.UnitTests;assembly=Xamarin.Forms.Xaml.UnitTests" + xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" + xmlns:forms="http://xamarin.com/schemas/2014/forms" + xmlns:windowsSpecific="clr-namespace:Xamarin.Forms.PlatformConfiguration.WindowsSpecific;assembly=Xamarin.Forms.Core" + x:Class="Xamarin.Forms.Xaml.UnitTests.PlatformSpecific" + windowsSpecific:MasterDetailPage.CollapseStyle="Partial" + windowsSpecific:MasterDetailPage.CollapsedPaneWidth="96" + x:Name="TestMDP"> + <forms:MasterDetailPage.Master> + <forms:ContentPage x:Name="masterPage" Title="Platform Specifics" /> + </forms:MasterDetailPage.Master> + <forms:MasterDetailPage.Detail> + <forms:NavigationPage> + <x:Arguments> + <forms:ContentPage /> + </x:Arguments> + </forms:NavigationPage> + </forms:MasterDetailPage.Detail> +</forms:MasterDetailPage>
\ No newline at end of file diff --git a/Xamarin.Forms.Xaml.UnitTests/PlatformSpecifics.xaml.cs b/Xamarin.Forms.Xaml.UnitTests/PlatformSpecifics.xaml.cs new file mode 100644 index 00000000..bcd98942 --- /dev/null +++ b/Xamarin.Forms.Xaml.UnitTests/PlatformSpecifics.xaml.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; + +using Xamarin.Forms; +using NUnit.Framework; +using Xamarin.Forms.PlatformConfiguration; +using Xamarin.Forms.PlatformConfiguration.WindowsSpecific; + +namespace Xamarin.Forms.Xaml.UnitTests +{ + public partial class PlatformSpecific : MasterDetailPage + { + public PlatformSpecific() + { + InitializeComponent(); + } + + public PlatformSpecific(bool useCompiledXaml) + { + //this stub will be replaced at compile time + } + + [TestFixture] + class Tests + { + [TestCase(true)] + [TestCase(false)] + public void PlatformSpecificPropertyIsSet(bool useCompiledXaml) + { + var layout = new PlatformSpecific(useCompiledXaml); + Assert.AreEqual(layout.On<Windows>().GetCollapseStyle(), CollapseStyle.Partial); + Assert.AreEqual(layout.On<Windows>().CollapsedPaneWidth(), 96d); + } + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj b/Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj index 4f67feb1..86e2eeb0 100644 --- a/Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj +++ b/Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj @@ -85,6 +85,9 @@ <DependentUpon>Bz41296.xaml</DependentUpon> </Compile> <Compile Include="LoaderTests.cs" /> + <Compile Include="PlatformSpecifics.xaml.cs"> + <DependentUpon>PlatformSpecifics.xaml</DependentUpon> + </Compile> <Compile Include="ViewExtensionsTest.cs" /> <Compile Include="MarkupExpressionParserTests.cs" /> <Compile Include="MarkupExtensionTests.cs" /> @@ -655,4 +658,9 @@ <Generator>MSBuild:UpdateDesignTimeXaml</Generator> </EmbeddedResource> </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="PlatformSpecifics.xaml"> + <Generator>MSBuild:UpdateDesignTimeXaml</Generator> + </EmbeddedResource> + </ItemGroup> </Project>
\ No newline at end of file diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.AndroidSpecific/Application.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.AndroidSpecific/Application.xml new file mode 100644 index 00000000..82e404cc --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.AndroidSpecific/Application.xml @@ -0,0 +1,116 @@ +<Type Name="Application" FullName="Xamarin.Forms.PlatformConfiguration.AndroidSpecific.Application"> + <TypeSignature Language="C#" Value="public static class Application" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit Application extends System.Object" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Object</BaseTypeName> + </Base> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="GetWindowSoftInputModeAdjust"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust GetWindowSoftInputModeAdjust (Xamarin.Forms.BindableObject element);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust GetWindowSoftInputModeAdjust(class Xamarin.Forms.BindableObject element) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="element" Type="Xamarin.Forms.BindableObject" /> + </Parameters> + <Docs> + <param name="element">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetWindowSoftInputModeAdjust"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust GetWindowSoftInputModeAdjust (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Android,Xamarin.Forms.Application> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust GetWindowSoftInputModeAdjust(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Android, class Xamarin.Forms.Application> config) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Android,Xamarin.Forms.Application>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SetWindowSoftInputModeAdjust"> + <MemberSignature Language="C#" Value="public static void SetWindowSoftInputModeAdjust (Xamarin.Forms.BindableObject element, Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetWindowSoftInputModeAdjust(class Xamarin.Forms.BindableObject element, valuetype Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust value) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="element" Type="Xamarin.Forms.BindableObject" /> + <Parameter Name="value" Type="Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust" /> + </Parameters> + <Docs> + <param name="element">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="UseWindowSoftInputModeAdjust"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Android,Xamarin.Forms.Application> UseWindowSoftInputModeAdjust (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Android,Xamarin.Forms.Application> config, Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Android, class Xamarin.Forms.Application> UseWindowSoftInputModeAdjust(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Android, class Xamarin.Forms.Application> config, valuetype Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust value) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Android,Xamarin.Forms.Application></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Android,Xamarin.Forms.Application>" RefType="this" /> + <Parameter Name="value" Type="Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="WindowSoftInputModeAdjustProperty"> + <MemberSignature Language="C#" Value="public static readonly Xamarin.Forms.BindableProperty WindowSoftInputModeAdjustProperty;" /> + <MemberSignature Language="ILAsm" Value=".field public static initonly class Xamarin.Forms.BindableProperty WindowSoftInputModeAdjustProperty" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.BindableProperty</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.AndroidSpecific/WindowSoftInputModeAdjust.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.AndroidSpecific/WindowSoftInputModeAdjust.xml new file mode 100644 index 00000000..7422f567 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.AndroidSpecific/WindowSoftInputModeAdjust.xml @@ -0,0 +1,45 @@ +<Type Name="WindowSoftInputModeAdjust" FullName="Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust"> + <TypeSignature Language="C#" Value="public enum WindowSoftInputModeAdjust" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed WindowSoftInputModeAdjust extends System.Enum" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Enum</BaseTypeName> + </Base> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="Pan"> + <MemberSignature Language="C#" Value="Pan" /> + <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust Pan = int32(0)" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + </Docs> + </Member> + <Member MemberName="Resize"> + <MemberSignature Language="C#" Value="Resize" /> + <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust Resize = int32(1)" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.WindowsSpecific/CollapseStyle.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.WindowsSpecific/CollapseStyle.xml new file mode 100644 index 00000000..7970fd42 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.WindowsSpecific/CollapseStyle.xml @@ -0,0 +1,45 @@ +<Type Name="CollapseStyle" FullName="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle"> + <TypeSignature Language="C#" Value="public enum CollapseStyle" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed CollapseStyle extends System.Enum" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Enum</BaseTypeName> + </Base> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="Full"> + <MemberSignature Language="C#" Value="Full" /> + <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle Full = int32(0)" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + </Docs> + </Member> + <Member MemberName="Partial"> + <MemberSignature Language="C#" Value="Partial" /> + <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle Partial = int32(1)" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.WindowsSpecific/MasterDetailPage.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.WindowsSpecific/MasterDetailPage.xml new file mode 100644 index 00000000..57d8a4e4 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.WindowsSpecific/MasterDetailPage.xml @@ -0,0 +1,234 @@ +<Type Name="MasterDetailPage" FullName="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.MasterDetailPage"> + <TypeSignature Language="C#" Value="public static class MasterDetailPage" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit MasterDetailPage extends System.Object" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Object</BaseTypeName> + </Base> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="CollapsedPaneWidth"> + <MemberSignature Language="C#" Value="public static double CollapsedPaneWidth (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 CollapsedPaneWidth(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> config) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Double</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="CollapsedPaneWidth"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> CollapsedPaneWidth (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> config, double value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> CollapsedPaneWidth(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> config, float64 value) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage>" RefType="this" /> + <Parameter Name="value" Type="System.Double" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="CollapsedPaneWidthProperty"> + <MemberSignature Language="C#" Value="public static readonly Xamarin.Forms.BindableProperty CollapsedPaneWidthProperty;" /> + <MemberSignature Language="ILAsm" Value=".field public static initonly class Xamarin.Forms.BindableProperty CollapsedPaneWidthProperty" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.BindableProperty</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="CollapseStyleProperty"> + <MemberSignature Language="C#" Value="public static readonly Xamarin.Forms.BindableProperty CollapseStyleProperty;" /> + <MemberSignature Language="ILAsm" Value=".field public static initonly class Xamarin.Forms.BindableProperty CollapseStyleProperty" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.BindableProperty</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetCollapsedPaneWidth"> + <MemberSignature Language="C#" Value="public static double GetCollapsedPaneWidth (Xamarin.Forms.BindableObject element);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 GetCollapsedPaneWidth(class Xamarin.Forms.BindableObject element) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Double</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="element" Type="Xamarin.Forms.BindableObject" /> + </Parameters> + <Docs> + <param name="element">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetCollapseStyle"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle GetCollapseStyle (Xamarin.Forms.BindableObject element);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle GetCollapseStyle(class Xamarin.Forms.BindableObject element) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="element" Type="Xamarin.Forms.BindableObject" /> + </Parameters> + <Docs> + <param name="element">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetCollapseStyle"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle GetCollapseStyle (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle GetCollapseStyle(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> config) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SetCollapsedPaneWidth"> + <MemberSignature Language="C#" Value="public static void SetCollapsedPaneWidth (Xamarin.Forms.BindableObject element, double collapsedPaneWidth);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetCollapsedPaneWidth(class Xamarin.Forms.BindableObject element, float64 collapsedPaneWidth) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="element" Type="Xamarin.Forms.BindableObject" /> + <Parameter Name="collapsedPaneWidth" Type="System.Double" /> + </Parameters> + <Docs> + <param name="element">To be added.</param> + <param name="collapsedPaneWidth">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SetCollapseStyle"> + <MemberSignature Language="C#" Value="public static void SetCollapseStyle (Xamarin.Forms.BindableObject element, Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle collapseStyle);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetCollapseStyle(class Xamarin.Forms.BindableObject element, valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle collapseStyle) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="element" Type="Xamarin.Forms.BindableObject" /> + <Parameter Name="collapseStyle" Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle" /> + </Parameters> + <Docs> + <param name="element">To be added.</param> + <param name="collapseStyle">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SetCollapseStyle"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> SetCollapseStyle (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> config, Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> SetCollapseStyle(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> config, valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle value) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage>" RefType="this" /> + <Parameter Name="value" Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="UsePartialCollapse"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> UsePartialCollapse (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> UsePartialCollapse(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> config) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.WindowsSpecific/Page.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.WindowsSpecific/Page.xml new file mode 100644 index 00000000..fecd773c --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.WindowsSpecific/Page.xml @@ -0,0 +1,116 @@ +<Type Name="Page" FullName="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.Page"> + <TypeSignature Language="C#" Value="public static class Page" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit Page extends System.Object" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Object</BaseTypeName> + </Base> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="GetToolbarPlacement"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement GetToolbarPlacement (Xamarin.Forms.BindableObject element);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement GetToolbarPlacement(class Xamarin.Forms.BindableObject element) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="element" Type="Xamarin.Forms.BindableObject" /> + </Parameters> + <Docs> + <param name="element">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetToolbarPlacement"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement GetToolbarPlacement (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.Page> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement GetToolbarPlacement(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.Page> config) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.Page>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SetToolbarPlacement"> + <MemberSignature Language="C#" Value="public static void SetToolbarPlacement (Xamarin.Forms.BindableObject element, Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement toolbarPlacement);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetToolbarPlacement(class Xamarin.Forms.BindableObject element, valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement toolbarPlacement) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="element" Type="Xamarin.Forms.BindableObject" /> + <Parameter Name="toolbarPlacement" Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement" /> + </Parameters> + <Docs> + <param name="element">To be added.</param> + <param name="toolbarPlacement">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SetToolbarPlacement"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.Page> SetToolbarPlacement (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.Page> config, Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.Page> SetToolbarPlacement(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.Page> config, valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement value) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.Page></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.Page>" RefType="this" /> + <Parameter Name="value" Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="ToolbarPlacementProperty"> + <MemberSignature Language="C#" Value="public static readonly Xamarin.Forms.BindableProperty ToolbarPlacementProperty;" /> + <MemberSignature Language="ILAsm" Value=".field public static initonly class Xamarin.Forms.BindableProperty ToolbarPlacementProperty" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.BindableProperty</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.WindowsSpecific/ToolbarPlacement.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.WindowsSpecific/ToolbarPlacement.xml new file mode 100644 index 00000000..5c571c93 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.WindowsSpecific/ToolbarPlacement.xml @@ -0,0 +1,59 @@ +<Type Name="ToolbarPlacement" FullName="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement"> + <TypeSignature Language="C#" Value="public enum ToolbarPlacement" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed ToolbarPlacement extends System.Enum" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Enum</BaseTypeName> + </Base> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="Bottom"> + <MemberSignature Language="C#" Value="Bottom" /> + <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement Bottom = int32(2)" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + </Docs> + </Member> + <Member MemberName="Default"> + <MemberSignature Language="C#" Value="Default" /> + <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement Default = int32(0)" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + </Docs> + </Member> + <Member MemberName="Top"> + <MemberSignature Language="C#" Value="Top" /> + <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement Top = int32(1)" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.iOSSpecific/BlurEffectStyle.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.iOSSpecific/BlurEffectStyle.xml new file mode 100644 index 00000000..1d72c88f --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.iOSSpecific/BlurEffectStyle.xml @@ -0,0 +1,73 @@ +<Type Name="BlurEffectStyle" FullName="Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle"> + <TypeSignature Language="C#" Value="public enum BlurEffectStyle" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed BlurEffectStyle extends System.Enum" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Enum</BaseTypeName> + </Base> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="Dark"> + <MemberSignature Language="C#" Value="Dark" /> + <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle Dark = int32(3)" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + </Docs> + </Member> + <Member MemberName="ExtraLight"> + <MemberSignature Language="C#" Value="ExtraLight" /> + <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle ExtraLight = int32(1)" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + </Docs> + </Member> + <Member MemberName="Light"> + <MemberSignature Language="C#" Value="Light" /> + <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle Light = int32(2)" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + </Docs> + </Member> + <Member MemberName="None"> + <MemberSignature Language="C#" Value="None" /> + <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle None = int32(0)" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.iOSSpecific/NavigationPage.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.iOSSpecific/NavigationPage.xml new file mode 100644 index 00000000..6f9f08ff --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.iOSSpecific/NavigationPage.xml @@ -0,0 +1,156 @@ +<Type Name="NavigationPage" FullName="Xamarin.Forms.PlatformConfiguration.iOSSpecific.NavigationPage"> + <TypeSignature Language="C#" Value="public static class NavigationPage" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit NavigationPage extends System.Object" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Object</BaseTypeName> + </Base> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="DisableTranslucentNavigationBar"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage> DisableTranslucentNavigationBar (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.NavigationPage> DisableTranslucentNavigationBar(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.NavigationPage> config) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="EnableTranslucentNavigationBar"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage> EnableTranslucentNavigationBar (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.NavigationPage> EnableTranslucentNavigationBar(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.NavigationPage> config) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetIsNavigationBarTranslucent"> + <MemberSignature Language="C#" Value="public static bool GetIsNavigationBarTranslucent (Xamarin.Forms.BindableObject element);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool GetIsNavigationBarTranslucent(class Xamarin.Forms.BindableObject element) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Boolean</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="element" Type="Xamarin.Forms.BindableObject" /> + </Parameters> + <Docs> + <param name="element">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="IsNavigationBarTranslucent"> + <MemberSignature Language="C#" Value="public static bool IsNavigationBarTranslucent (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsNavigationBarTranslucent(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.NavigationPage> config) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Boolean</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="IsNavigationBarTranslucentProperty"> + <MemberSignature Language="C#" Value="public static readonly Xamarin.Forms.BindableProperty IsNavigationBarTranslucentProperty;" /> + <MemberSignature Language="ILAsm" Value=".field public static initonly class Xamarin.Forms.BindableProperty IsNavigationBarTranslucentProperty" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.BindableProperty</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SetIsNavigationBarTranslucent"> + <MemberSignature Language="C#" Value="public static void SetIsNavigationBarTranslucent (Xamarin.Forms.BindableObject element, bool value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetIsNavigationBarTranslucent(class Xamarin.Forms.BindableObject element, bool value) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="element" Type="Xamarin.Forms.BindableObject" /> + <Parameter Name="value" Type="System.Boolean" /> + </Parameters> + <Docs> + <param name="element">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SetIsNavigationBarTranslucent"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage> SetIsNavigationBarTranslucent (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage> config, bool value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.NavigationPage> SetIsNavigationBarTranslucent(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.NavigationPage> config, bool value) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage>" RefType="this" /> + <Parameter Name="value" Type="System.Boolean" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.iOSSpecific/VisualElement.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.iOSSpecific/VisualElement.xml new file mode 100644 index 00000000..4150d5bf --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration.iOSSpecific/VisualElement.xml @@ -0,0 +1,116 @@ +<Type Name="VisualElement" FullName="Xamarin.Forms.PlatformConfiguration.iOSSpecific.VisualElement"> + <TypeSignature Language="C#" Value="public static class VisualElement" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit VisualElement extends System.Object" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Object</BaseTypeName> + </Base> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="BlurEffectProperty"> + <MemberSignature Language="C#" Value="public static readonly Xamarin.Forms.BindableProperty BlurEffectProperty;" /> + <MemberSignature Language="ILAsm" Value=".field public static initonly class Xamarin.Forms.BindableProperty BlurEffectProperty" /> + <MemberType>Field</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.BindableProperty</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetBlurEffect"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle GetBlurEffect (Xamarin.Forms.BindableObject element);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle GetBlurEffect(class Xamarin.Forms.BindableObject element) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="element" Type="Xamarin.Forms.BindableObject" /> + </Parameters> + <Docs> + <param name="element">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetBlurEffect"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle GetBlurEffect (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.VisualElement> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle GetBlurEffect(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.VisualElement> config) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.VisualElement>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SetBlurEffect"> + <MemberSignature Language="C#" Value="public static void SetBlurEffect (Xamarin.Forms.BindableObject element, Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetBlurEffect(class Xamarin.Forms.BindableObject element, valuetype Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle value) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="element" Type="Xamarin.Forms.BindableObject" /> + <Parameter Name="value" Type="Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle" /> + </Parameters> + <Docs> + <param name="element">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="UseBlurEffect"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.VisualElement> UseBlurEffect (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.VisualElement> config, Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.VisualElement> UseBlurEffect(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.VisualElement> config, valuetype Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle value) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.VisualElement></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.VisualElement>" RefType="this" /> + <Parameter Name="value" Type="Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration/Android.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration/Android.xml new file mode 100644 index 00000000..02ceb3cd --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration/Android.xml @@ -0,0 +1,35 @@ +<Type Name="Android" FullName="Xamarin.Forms.PlatformConfiguration.Android"> + <TypeSignature Language="C#" Value="public sealed class Android : Xamarin.Forms.IConfigPlatform" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit Android extends System.Object implements class Xamarin.Forms.IConfigPlatform" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Object</BaseTypeName> + </Base> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Interface> + </Interfaces> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public Android ();" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration/Windows.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration/Windows.xml new file mode 100644 index 00000000..43b77cb0 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration/Windows.xml @@ -0,0 +1,35 @@ +<Type Name="Windows" FullName="Xamarin.Forms.PlatformConfiguration.Windows"> + <TypeSignature Language="C#" Value="public sealed class Windows : Xamarin.Forms.IConfigPlatform" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit Windows extends System.Object implements class Xamarin.Forms.IConfigPlatform" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Object</BaseTypeName> + </Base> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Interface> + </Interfaces> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public Windows ();" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration/iOS.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration/iOS.xml new file mode 100644 index 00000000..ecdf7252 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.PlatformConfiguration/iOS.xml @@ -0,0 +1,35 @@ +<Type Name="iOS" FullName="Xamarin.Forms.PlatformConfiguration.iOS"> + <TypeSignature Language="C#" Value="public sealed class iOS : Xamarin.Forms.IConfigPlatform" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit iOS extends System.Object implements class Xamarin.Forms.IConfigPlatform" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Object</BaseTypeName> + </Base> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Interface> + </Interfaces> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public iOS ();" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/ActivityIndicator.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/ActivityIndicator.xml index bb376feb..a258a5dd 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/ActivityIndicator.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/ActivityIndicator.xml @@ -1,6 +1,6 @@ <Type Name="ActivityIndicator" FullName="Xamarin.Forms.ActivityIndicator"> - <TypeSignature Language="C#" Value="public class ActivityIndicator : Xamarin.Forms.View" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ActivityIndicator extends Xamarin.Forms.View" /> + <TypeSignature Language="C#" Value="public class ActivityIndicator : Xamarin.Forms.View, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.ActivityIndicator>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ActivityIndicator extends Xamarin.Forms.View implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.ActivityIndicator>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -14,7 +14,11 @@ <Base> <BaseTypeName>Xamarin.Forms.View</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.ActivityIndicator></InterfaceName> + </Interface> + </Interfaces> <Attributes> <Attribute> <AttributeName>Xamarin.Forms.RenderWith(typeof(Xamarin.Forms.Platform._ActivityIndicatorRenderer))</AttributeName> @@ -173,5 +177,30 @@ var indicator = new ActivityIndicator { </remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.ActivityIndicator> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.ActivityIndicator> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.ActivityIndicator></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> </Members> </Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Application.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Application.xml index 9f33ae28..a06fa6a0 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/Application.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Application.xml @@ -1,6 +1,6 @@ <Type Name="Application" FullName="Xamarin.Forms.Application"> - <TypeSignature Language="C#" Value="public class Application : Xamarin.Forms.Element, Xamarin.Forms.IApplicationController" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Application extends Xamarin.Forms.Element implements class Xamarin.Forms.IApplicationController" /> + <TypeSignature Language="C#" Value="public class Application : Xamarin.Forms.Element, Xamarin.Forms.IApplicationController, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Application>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Application extends Xamarin.Forms.Element implements class Xamarin.Forms.IApplicationController, class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.Application>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.3.0.0</AssemblyVersion> @@ -16,6 +16,9 @@ <Interface> <InterfaceName>Xamarin.Forms.IApplicationController</InterfaceName> </Interface> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Application></InterfaceName> + </Interface> </Interfaces> <Docs> <summary>Class that represents a cross-platform mobile application.</summary> @@ -167,6 +170,31 @@ <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Application> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.Application> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Application></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="OnAppLinkRequestReceived"> <MemberSignature Language="C#" Value="protected virtual void OnAppLinkRequestReceived (Uri uri);" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig newslot virtual instance void OnAppLinkRequestReceived(class System.Uri uri) cil managed" /> @@ -321,7 +349,7 @@ <AttributeName>System.Diagnostics.DebuggerStepThrough</AttributeName> </Attribute> <Attribute> - <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.Application/<SavePropertiesAsync>d__50))</AttributeName> + <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.Application/<SavePropertiesAsync>d__51))</AttributeName> </Attribute> </Attributes> <ReturnValue> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/BoxView.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/BoxView.xml index baed2b7a..5aa14114 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/BoxView.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/BoxView.xml @@ -1,6 +1,6 @@ <Type Name="BoxView" FullName="Xamarin.Forms.BoxView"> - <TypeSignature Language="C#" Value="public class BoxView : Xamarin.Forms.View" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit BoxView extends Xamarin.Forms.View" /> + <TypeSignature Language="C#" Value="public class BoxView : Xamarin.Forms.View, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.BoxView>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit BoxView extends Xamarin.Forms.View implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.BoxView>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -14,7 +14,11 @@ <Base> <BaseTypeName>Xamarin.Forms.View</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.BoxView></InterfaceName> + </Interface> + </Interfaces> <Attributes> <Attribute> <AttributeName>Xamarin.Forms.RenderWith(typeof(Xamarin.Forms.Platform._BoxViewRenderer))</AttributeName> @@ -145,6 +149,31 @@ namespace FormsGallery </remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.BoxView> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.BoxView> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.BoxView></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="OnSizeRequest"> <MemberSignature Language="C#" Value="protected override Xamarin.Forms.SizeRequest OnSizeRequest (double widthConstraint, double heightConstraint);" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance valuetype Xamarin.Forms.SizeRequest OnSizeRequest(float64 widthConstraint, float64 heightConstraint) cil managed" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Button.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Button.xml index e3d713cf..9650413c 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/Button.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Button.xml @@ -1,6 +1,6 @@ <Type Name="Button" FullName="Xamarin.Forms.Button"> - <TypeSignature Language="C#" Value="public class Button : Xamarin.Forms.View, Xamarin.Forms.IButtonController" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Button extends Xamarin.Forms.View implements class Xamarin.Forms.IButtonController, class Xamarin.Forms.IElementController, class Xamarin.Forms.IViewController, class Xamarin.Forms.IVisualElementController" /> + <TypeSignature Language="C#" Value="public class Button : Xamarin.Forms.View, Xamarin.Forms.IButtonController, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Button>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Button extends Xamarin.Forms.View implements class Xamarin.Forms.IButtonController, class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.Button>, class Xamarin.Forms.IElementController, class Xamarin.Forms.IViewController, class Xamarin.Forms.IVisualElementController" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -18,6 +18,9 @@ <Interface> <InterfaceName>Xamarin.Forms.IButtonController</InterfaceName> </Interface> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Button></InterfaceName> + </Interface> </Interfaces> <Attributes> <Attribute> @@ -594,6 +597,31 @@ namespace FormsGallery </remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Button> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.Button> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Button></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="OnBindingContextChanged"> <MemberSignature Language="C#" Value="protected override void OnBindingContextChanged ();" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance void OnBindingContextChanged() cil managed" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/CarouselPage.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/CarouselPage.xml index 4b72572e..f1fe41bb 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/CarouselPage.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/CarouselPage.xml @@ -1,6 +1,6 @@ <Type Name="CarouselPage" FullName="Xamarin.Forms.CarouselPage"> - <TypeSignature Language="C#" Value="public class CarouselPage : Xamarin.Forms.MultiPage<Xamarin.Forms.ContentPage>" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit CarouselPage extends Xamarin.Forms.MultiPage`1<class Xamarin.Forms.ContentPage>" /> + <TypeSignature Language="C#" Value="public class CarouselPage : Xamarin.Forms.MultiPage<Xamarin.Forms.ContentPage>, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.CarouselPage>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit CarouselPage extends Xamarin.Forms.MultiPage`1<class Xamarin.Forms.ContentPage> implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.CarouselPage>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -17,7 +17,11 @@ <BaseTypeArgument TypeParamName="T">Xamarin.Forms.ContentPage</BaseTypeArgument> </BaseTypeArguments> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.CarouselPage></InterfaceName> + </Interface> + </Interfaces> <Attributes> <Attribute> <AttributeName>Xamarin.Forms.RenderWith(typeof(Xamarin.Forms.Platform._CarouselPageRenderer))</AttributeName> @@ -130,5 +134,30 @@ MainPage = new CarouselPage { <remarks>This returns a new <see cref="T:Xamarin.Forms.Page" /> object that has its <see cref="P:Xamarin.Forms.Page.Title" /> property set to the value of <see cref="M:Object.ToString" /> when called on <paramref name="item" />.</remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.CarouselPage> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.CarouselPage> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.CarouselPage></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> </Members> </Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Configuration`2.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Configuration`2.xml new file mode 100644 index 00000000..d2f91064 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Configuration`2.xml @@ -0,0 +1,91 @@ +<Type Name="Configuration<TPlatform,TElement>" FullName="Xamarin.Forms.Configuration<TPlatform,TElement>"> + <TypeSignature Language="C#" Value="public class Configuration<TPlatform,TElement> : Xamarin.Forms.IConfigElement<TElement>, Xamarin.Forms.IPlatformElementConfiguration<TPlatform,TElement> where TPlatform : IConfigPlatform where TElement : Element" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Configuration`2<(class Xamarin.Forms.IConfigPlatform) TPlatform, (class Xamarin.Forms.Element) TElement> extends System.Object implements class Xamarin.Forms.IConfigElement`1<!TElement>, class Xamarin.Forms.IPlatformElementConfiguration`2<!TPlatform, !TElement>" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <TypeParameters> + <TypeParameter Name="TPlatform"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + <TypeParameter Name="TElement"> + <Constraints> + <BaseTypeName>Xamarin.Forms.Element</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Base> + <BaseTypeName>System.Object</BaseTypeName> + </Base> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IConfigElement<TElement></InterfaceName> + </Interface> + <Interface> + <InterfaceName>Xamarin.Forms.IPlatformElementConfiguration<TPlatform,TElement></InterfaceName> + </Interface> + </Interfaces> + <Docs> + <typeparam name="TPlatform">To be added.</typeparam> + <typeparam name="TElement">To be added.</typeparam> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public Configuration (TElement element);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(!TElement element) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="element" Type="TElement" /> + </Parameters> + <Docs> + <param name="element">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Create"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.Configuration<TPlatform,TElement> Create (TElement element);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.Configuration`2<!TPlatform, !TElement> Create(!TElement element) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.Configuration<TPlatform,TElement></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="element" Type="TElement" /> + </Parameters> + <Docs> + <param name="element">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Element"> + <MemberSignature Language="C#" Value="public TElement Element { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance !TElement Element" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>TElement</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/DatePicker.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/DatePicker.xml index e1eaddb5..05e2cc60 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/DatePicker.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/DatePicker.xml @@ -1,6 +1,6 @@ <Type Name="DatePicker" FullName="Xamarin.Forms.DatePicker"> - <TypeSignature Language="C#" Value="public class DatePicker : Xamarin.Forms.View" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit DatePicker extends Xamarin.Forms.View" /> + <TypeSignature Language="C#" Value="public class DatePicker : Xamarin.Forms.View, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.DatePicker>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit DatePicker extends Xamarin.Forms.View implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.DatePicker>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -14,7 +14,11 @@ <Base> <BaseTypeName>Xamarin.Forms.View</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.DatePicker></InterfaceName> + </Interface> + </Interfaces> <Attributes> <Attribute> <AttributeName>Xamarin.Forms.RenderWith(typeof(Xamarin.Forms.Platform._DatePickerRenderer))</AttributeName> @@ -315,6 +319,31 @@ DatePicker datePicker = new DatePicker </remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.DatePicker> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.DatePicker> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.DatePicker></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="TextColor"> <MemberSignature Language="C#" Value="public Xamarin.Forms.Color TextColor { get; set; }" /> <MemberSignature Language="ILAsm" Value=".property instance valuetype Xamarin.Forms.Color TextColor" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Editor.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Editor.xml index 3c45623a..627b7d28 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/Editor.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Editor.xml @@ -1,6 +1,6 @@ <Type Name="Editor" FullName="Xamarin.Forms.Editor"> - <TypeSignature Language="C#" Value="public class Editor : Xamarin.Forms.InputView" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Editor extends Xamarin.Forms.InputView" /> + <TypeSignature Language="C#" Value="public class Editor : Xamarin.Forms.InputView, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Editor>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Editor extends Xamarin.Forms.InputView implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.Editor>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -14,7 +14,11 @@ <Base> <BaseTypeName>Xamarin.Forms.InputView</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Editor></InterfaceName> + </Interface> + </Interfaces> <Attributes> <Attribute> <AttributeName>Xamarin.Forms.RenderWith(typeof(Xamarin.Forms.Platform._EditorRenderer))</AttributeName> @@ -197,6 +201,31 @@ var editor = new Editor { <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Editor> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.Editor> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Editor></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="Text"> <MemberSignature Language="C#" Value="public string Text { get; set; }" /> <MemberSignature Language="ILAsm" Value=".property instance string Text" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Element.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Element.xml index 0626721c..b431c37a 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/Element.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Element.xml @@ -625,6 +625,26 @@ <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="Xamarin.Forms.IElementController.EffectIsAttached"> + <MemberSignature Language="C#" Value="bool IElementController.EffectIsAttached (string name);" /> + <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance bool Xamarin.Forms.IElementController.EffectIsAttached(string name) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Boolean</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="name" Type="System.String" /> + </Parameters> + <Docs> + <param name="name">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="Xamarin.Forms.IElementController.LogicalChildren"> <MemberSignature Language="C#" Value="System.Collections.ObjectModel.ReadOnlyCollection<Xamarin.Forms.Element> Xamarin.Forms.IElementController.LogicalChildren { get; }" /> <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.ObjectModel.ReadOnlyCollection`1<class Xamarin.Forms.Element> Xamarin.Forms.IElementController.LogicalChildren" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Entry.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Entry.xml index 7297e9c2..28804a7a 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/Entry.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Entry.xml @@ -1,6 +1,6 @@ <Type Name="Entry" FullName="Xamarin.Forms.Entry"> - <TypeSignature Language="C#" Value="public class Entry : Xamarin.Forms.InputView, Xamarin.Forms.IEntryController" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Entry extends Xamarin.Forms.InputView implements class Xamarin.Forms.IEntryController" /> + <TypeSignature Language="C#" Value="public class Entry : Xamarin.Forms.InputView, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Entry>, Xamarin.Forms.IEntryController" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Entry extends Xamarin.Forms.InputView implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.Entry>, class Xamarin.Forms.IEntryController" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -16,6 +16,9 @@ </Base> <Interfaces> <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Entry></InterfaceName> + </Interface> + <Interface> <InterfaceName>Xamarin.Forms.IEntryController</InterfaceName> </Interface> </Interfaces> @@ -308,6 +311,31 @@ View CreateLoginForm () </remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Entry> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.Entry> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Entry></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="Placeholder"> <MemberSignature Language="C#" Value="public string Placeholder { get; set; }" /> <MemberSignature Language="ILAsm" Value=".property instance string Placeholder" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Frame.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Frame.xml index 6a199ce0..d056ab6f 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/Frame.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Frame.xml @@ -1,6 +1,6 @@ <Type Name="Frame" FullName="Xamarin.Forms.Frame"> - <TypeSignature Language="C#" Value="public class Frame : Xamarin.Forms.ContentView" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Frame extends Xamarin.Forms.ContentView" /> + <TypeSignature Language="C#" Value="public class Frame : Xamarin.Forms.ContentView, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Frame>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Frame extends Xamarin.Forms.ContentView implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.Frame>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -14,7 +14,11 @@ <Base> <BaseTypeName>Xamarin.Forms.ContentView</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Frame></InterfaceName> + </Interface> + </Interfaces> <Attributes> <Attribute> <AttributeName>Xamarin.Forms.ContentProperty("Content")</AttributeName> @@ -132,6 +136,31 @@ MainPage = new ContentPage () { </remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Frame> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.Frame> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Frame></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="OutlineColor"> <MemberSignature Language="C#" Value="public Xamarin.Forms.Color OutlineColor { get; set; }" /> <MemberSignature Language="ILAsm" Value=".property instance valuetype Xamarin.Forms.Color OutlineColor" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/IConfigElement`1.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/IConfigElement`1.xml new file mode 100644 index 00000000..589e7856 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/IConfigElement`1.xml @@ -0,0 +1,40 @@ +<Type Name="IConfigElement<T>" FullName="Xamarin.Forms.IConfigElement<T>"> + <TypeSignature Language="C#" Value="public interface IConfigElement<out T> where T : Element" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IConfigElement`1<(class Xamarin.Forms.Element) + T>" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <ParameterAttribute>Covariant</ParameterAttribute> + <BaseTypeName>Xamarin.Forms.Element</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Interfaces /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="Element"> + <MemberSignature Language="C#" Value="public T Element { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance !T Element" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>T</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/IConfigPlatform.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/IConfigPlatform.xml new file mode 100644 index 00000000..550913f9 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/IConfigPlatform.xml @@ -0,0 +1,14 @@ +<Type Name="IConfigPlatform" FullName="Xamarin.Forms.IConfigPlatform"> + <TypeSignature Language="C#" Value="public interface IConfigPlatform" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IConfigPlatform" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members /> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/IElementConfiguration`1.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/IElementConfiguration`1.xml new file mode 100644 index 00000000..fd951bd9 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/IElementConfiguration`1.xml @@ -0,0 +1,49 @@ +<Type Name="IElementConfiguration<TElement>" FullName="Xamarin.Forms.IElementConfiguration<TElement>"> + <TypeSignature Language="C#" Value="public interface IElementConfiguration<out TElement> where TElement : Element" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IElementConfiguration`1<(class Xamarin.Forms.Element) + TElement>" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <TypeParameters> + <TypeParameter Name="TElement"> + <Constraints> + <ParameterAttribute>Covariant</ParameterAttribute> + <BaseTypeName>Xamarin.Forms.Element</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Interfaces /> + <Docs> + <typeparam name="TElement">To be added.</typeparam> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,out TElement> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, !TElement> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,TElement></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/IElementController.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/IElementController.xml index d891eb09..d02b589c 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/IElementController.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/IElementController.xml @@ -30,6 +30,26 @@ <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="EffectIsAttached"> + <MemberSignature Language="C#" Value="public bool EffectIsAttached (string name);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool EffectIsAttached(string name) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Boolean</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="name" Type="System.String" /> + </Parameters> + <Docs> + <param name="name">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="LogicalChildren"> <MemberSignature Language="C#" Value="public System.Collections.ObjectModel.ReadOnlyCollection<Xamarin.Forms.Element> LogicalChildren { get; }" /> <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.ObjectModel.ReadOnlyCollection`1<class Xamarin.Forms.Element> LogicalChildren" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/IPlatformElementConfiguration`2.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/IPlatformElementConfiguration`2.xml new file mode 100644 index 00000000..a595879a --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/IPlatformElementConfiguration`2.xml @@ -0,0 +1,34 @@ +<Type Name="IPlatformElementConfiguration<TPlatform,TElement>" FullName="Xamarin.Forms.IPlatformElementConfiguration<TPlatform,TElement>"> + <TypeSignature Language="C#" Value="public interface IPlatformElementConfiguration<out TPlatform,out TElement> : Xamarin.Forms.IConfigElement<out TElement> where TPlatform : IConfigPlatform where TElement : Element" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IPlatformElementConfiguration`2<(class Xamarin.Forms.IConfigPlatform) + TPlatform, (class Xamarin.Forms.Element) + TElement> implements class Xamarin.Forms.IConfigElement`1<!TElement>" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <TypeParameters> + <TypeParameter Name="TPlatform"> + <Constraints> + <ParameterAttribute>Covariant</ParameterAttribute> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + <TypeParameter Name="TElement"> + <Constraints> + <ParameterAttribute>Covariant</ParameterAttribute> + <BaseTypeName>Xamarin.Forms.Element</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IConfigElement<TElement></InterfaceName> + </Interface> + </Interfaces> + <Docs> + <typeparam name="TPlatform">To be added.</typeparam> + <typeparam name="TElement">To be added.</typeparam> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members /> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Image.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Image.xml index 25453fd9..af571063 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/Image.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Image.xml @@ -1,6 +1,6 @@ <Type Name="Image" FullName="Xamarin.Forms.Image"> - <TypeSignature Language="C#" Value="public class Image : Xamarin.Forms.View, Xamarin.Forms.IImageController" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Image extends Xamarin.Forms.View implements class Xamarin.Forms.IImageController" /> + <TypeSignature Language="C#" Value="public class Image : Xamarin.Forms.View, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Image>, Xamarin.Forms.IImageController" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Image extends Xamarin.Forms.View implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.Image>, class Xamarin.Forms.IImageController" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -16,6 +16,9 @@ </Base> <Interfaces> <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Image></InterfaceName> + </Interface> + <Interface> <InterfaceName>Xamarin.Forms.IImageController</InterfaceName> </Interface> </Interfaces> @@ -216,6 +219,31 @@ indicator.BindingContext = image;]]></code> </remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Image> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.Image> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Image></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="OnBindingContextChanged"> <MemberSignature Language="C#" Value="protected override void OnBindingContextChanged ();" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance void OnBindingContextChanged() cil managed" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Label.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Label.xml index 47a9a6b0..776a12a5 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/Label.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Label.xml @@ -1,6 +1,6 @@ <Type Name="Label" FullName="Xamarin.Forms.Label"> - <TypeSignature Language="C#" Value="public class Label : Xamarin.Forms.View" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Label extends Xamarin.Forms.View" /> + <TypeSignature Language="C#" Value="public class Label : Xamarin.Forms.View, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Label>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Label extends Xamarin.Forms.View implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.Label>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -15,6 +15,9 @@ <BaseTypeName>Xamarin.Forms.View</BaseTypeName> </Base> <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Label></InterfaceName> + </Interface> </Interfaces> <Attributes> <Attribute> @@ -426,6 +429,31 @@ public class App : Application </remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Label> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.Label> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Label></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="Text"> <MemberSignature Language="C#" Value="public string Text { get; set; }" /> <MemberSignature Language="ILAsm" Value=".property instance string Text" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/ListView.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/ListView.xml index 950e2530..f1fb11dd 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/ListView.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/ListView.xml @@ -1,6 +1,6 @@ <Type Name="ListView" FullName="Xamarin.Forms.ListView"> - <TypeSignature Language="C#" Value="public class ListView : Xamarin.Forms.ItemsView<Xamarin.Forms.Cell>, Xamarin.Forms.IListViewController" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ListView extends Xamarin.Forms.ItemsView`1<class Xamarin.Forms.Cell> implements class Xamarin.Forms.IElementController, class Xamarin.Forms.IListViewController, class Xamarin.Forms.IViewController, class Xamarin.Forms.IVisualElementController" /> + <TypeSignature Language="C#" Value="public class ListView : Xamarin.Forms.ItemsView<Xamarin.Forms.Cell>, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.ListView>, Xamarin.Forms.IListViewController" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ListView extends Xamarin.Forms.ItemsView`1<class Xamarin.Forms.Cell> implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.ListView>, class Xamarin.Forms.IElementController, class Xamarin.Forms.IListViewController, class Xamarin.Forms.IViewController, class Xamarin.Forms.IVisualElementController" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -20,6 +20,9 @@ </Base> <Interfaces> <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.ListView></InterfaceName> + </Interface> + <Interface> <InterfaceName>Xamarin.Forms.IListViewController</InterfaceName> </Interface> </Interfaces> @@ -1010,6 +1013,31 @@ ListView CreateListView() <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.ListView> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.ListView> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.ListView></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="OnSizeRequest"> <MemberSignature Language="C#" Value="protected override Xamarin.Forms.SizeRequest OnSizeRequest (double widthConstraint, double heightConstraint);" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance valuetype Xamarin.Forms.SizeRequest OnSizeRequest(float64 widthConstraint, float64 heightConstraint) cil managed" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/MasterDetailPage.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/MasterDetailPage.xml index 5c802650..cd01c3c1 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/MasterDetailPage.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/MasterDetailPage.xml @@ -1,6 +1,6 @@ <Type Name="MasterDetailPage" FullName="Xamarin.Forms.MasterDetailPage"> - <TypeSignature Language="C#" Value="public class MasterDetailPage : Xamarin.Forms.Page, Xamarin.Forms.IMasterDetailPageController" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MasterDetailPage extends Xamarin.Forms.Page implements class Xamarin.Forms.IMasterDetailPageController" /> + <TypeSignature Language="C#" Value="public class MasterDetailPage : Xamarin.Forms.Page, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.MasterDetailPage>, Xamarin.Forms.IMasterDetailPageController" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MasterDetailPage extends Xamarin.Forms.Page implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.MasterDetailPage>, class Xamarin.Forms.IMasterDetailPageController" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -16,6 +16,9 @@ </Base> <Interfaces> <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.MasterDetailPage></InterfaceName> + </Interface> + <Interface> <InterfaceName>Xamarin.Forms.IMasterDetailPageController</InterfaceName> </Interface> </Interfaces> @@ -368,6 +371,31 @@ namespace FormsGallery <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.MasterDetailPage> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.MasterDetailPage> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.MasterDetailPage></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="OnAppearing"> <MemberSignature Language="C#" Value="protected override void OnAppearing ();" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance void OnAppearing() cil managed" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/NavigationPage.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/NavigationPage.xml index d31d850e..4e7ed1fb 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/NavigationPage.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/NavigationPage.xml @@ -1,6 +1,6 @@ <Type Name="NavigationPage" FullName="Xamarin.Forms.NavigationPage"> - <TypeSignature Language="C#" Value="public class NavigationPage : Xamarin.Forms.Page, Xamarin.Forms.INavigationPageController, Xamarin.Forms.IPageContainer<Xamarin.Forms.Page>" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit NavigationPage extends Xamarin.Forms.Page implements class Xamarin.Forms.INavigationPageController, class Xamarin.Forms.IPageContainer`1<class Xamarin.Forms.Page>" /> + <TypeSignature Language="C#" Value="public class NavigationPage : Xamarin.Forms.Page, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.NavigationPage>, Xamarin.Forms.INavigationPageController, Xamarin.Forms.IPageContainer<Xamarin.Forms.Page>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit NavigationPage extends Xamarin.Forms.Page implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.NavigationPage>, class Xamarin.Forms.INavigationPageController, class Xamarin.Forms.IPageContainer`1<class Xamarin.Forms.Page>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -16,6 +16,9 @@ </Base> <Interfaces> <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.NavigationPage></InterfaceName> + </Interface> + <Interface> <InterfaceName>Xamarin.Forms.INavigationPageController</InterfaceName> </Interface> <Interface> @@ -364,6 +367,31 @@ <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.NavigationPage> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.NavigationPage> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.NavigationPage></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="OnBackButtonPressed"> <MemberSignature Language="C#" Value="protected override bool OnBackButtonPressed ();" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance bool OnBackButtonPressed() cil managed" /> @@ -422,7 +450,7 @@ <AttributeName>System.Diagnostics.DebuggerStepThrough</AttributeName> </Attribute> <Attribute> - <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.NavigationPage/<PopAsync>d__36))</AttributeName> + <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.NavigationPage/<PopAsync>d__38))</AttributeName> </Attribute> </Attributes> <ReturnValue> @@ -520,7 +548,7 @@ <AttributeName>System.Diagnostics.DebuggerStepThrough</AttributeName> </Attribute> <Attribute> - <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.NavigationPage/<PopToRootAsync>d__44))</AttributeName> + <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.NavigationPage/<PopToRootAsync>d__46))</AttributeName> </Attribute> </Attributes> <ReturnValue> @@ -577,7 +605,7 @@ <AttributeName>System.Diagnostics.DebuggerStepThrough</AttributeName> </Attribute> <Attribute> - <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.NavigationPage/<PushAsync>d__46))</AttributeName> + <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.NavigationPage/<PushAsync>d__48))</AttributeName> </Attribute> </Attributes> <ReturnValue> @@ -828,7 +856,7 @@ public class MyPage : NavigationPage <AttributeName>System.Diagnostics.DebuggerStepThrough</AttributeName> </Attribute> <Attribute> - <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.NavigationPage/<Xamarin-Forms-INavigationPageController-PopAsyncInner>d__61))</AttributeName> + <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.NavigationPage/<Xamarin-Forms-INavigationPageController-PopAsyncInner>d__63))</AttributeName> </Attribute> </Attributes> <ReturnValue> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/OpenGLView.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/OpenGLView.xml index 038bc3eb..e9704a6f 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/OpenGLView.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/OpenGLView.xml @@ -1,6 +1,6 @@ <Type Name="OpenGLView" FullName="Xamarin.Forms.OpenGLView"> - <TypeSignature Language="C#" Value="public sealed class OpenGLView : Xamarin.Forms.View, Xamarin.Forms.IOpenGlViewController" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit OpenGLView extends Xamarin.Forms.View implements class Xamarin.Forms.IElementController, class Xamarin.Forms.IOpenGlViewController, class Xamarin.Forms.IViewController, class Xamarin.Forms.IVisualElementController" /> + <TypeSignature Language="C#" Value="public sealed class OpenGLView : Xamarin.Forms.View, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.OpenGLView>, Xamarin.Forms.IOpenGlViewController" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit OpenGLView extends Xamarin.Forms.View implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.OpenGLView>, class Xamarin.Forms.IElementController, class Xamarin.Forms.IOpenGlViewController, class Xamarin.Forms.IViewController, class Xamarin.Forms.IVisualElementController" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -16,6 +16,9 @@ </Base> <Interfaces> <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.OpenGLView></InterfaceName> + </Interface> + <Interface> <InterfaceName>Xamarin.Forms.IOpenGlViewController</InterfaceName> </Interface> </Interfaces> @@ -173,6 +176,31 @@ namespace opengl <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.OpenGLView> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.OpenGLView> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.OpenGLView></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="OnDisplay"> <MemberSignature Language="C#" Value="public Action<Xamarin.Forms.Rectangle> OnDisplay { get; set; }" /> <MemberSignature Language="ILAsm" Value=".property instance class System.Action`1<valuetype Xamarin.Forms.Rectangle> OnDisplay" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Page.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Page.xml index e25234f6..44d7955f 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/Page.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Page.xml @@ -1,6 +1,6 @@ <Type Name="Page" FullName="Xamarin.Forms.Page"> - <TypeSignature Language="C#" Value="public class Page : Xamarin.Forms.VisualElement, Xamarin.Forms.ILayout, Xamarin.Forms.IPageController" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Page extends Xamarin.Forms.VisualElement implements class Xamarin.Forms.ILayout, class Xamarin.Forms.IPageController" /> + <TypeSignature Language="C#" Value="public class Page : Xamarin.Forms.VisualElement, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Page>, Xamarin.Forms.ILayout, Xamarin.Forms.IPageController" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Page extends Xamarin.Forms.VisualElement implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.Page>, class Xamarin.Forms.ILayout, class Xamarin.Forms.IPageController" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -16,6 +16,9 @@ </Base> <Interfaces> <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Page></InterfaceName> + </Interface> + <Interface> <InterfaceName>Xamarin.Forms.ILayout</InterfaceName> </Interface> <Interface> @@ -603,6 +606,31 @@ namespace MyFirstFormsApp.WinPhone <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Page> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.Page> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Page></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="OnAppearing"> <MemberSignature Language="C#" Value="protected virtual void OnAppearing ();" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig newslot virtual instance void OnAppearing() cil managed" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Picker.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Picker.xml index 560ebc6a..0e9424e3 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/Picker.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Picker.xml @@ -1,6 +1,6 @@ <Type Name="Picker" FullName="Xamarin.Forms.Picker"> - <TypeSignature Language="C#" Value="public class Picker : Xamarin.Forms.View" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Picker extends Xamarin.Forms.View" /> + <TypeSignature Language="C#" Value="public class Picker : Xamarin.Forms.View, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Picker>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Picker extends Xamarin.Forms.View implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.Picker>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -14,7 +14,11 @@ <Base> <BaseTypeName>Xamarin.Forms.View</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Picker></InterfaceName> + </Interface> + </Interfaces> <Attributes> <Attribute> <AttributeName>Xamarin.Forms.RenderWith(typeof(Xamarin.Forms.Platform._PickerRenderer))</AttributeName> @@ -181,6 +185,31 @@ namespace FormsGallery <remarks>This property is read-only, but exposes the IList<> interface, so items can be added using Add().</remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Picker> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.Picker> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Picker></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="SelectedIndex"> <MemberSignature Language="C#" Value="public int SelectedIndex { get; set; }" /> <MemberSignature Language="ILAsm" Value=".property instance int32 SelectedIndex" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/ProgressBar.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/ProgressBar.xml index ed9cc2b8..919c6bb2 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/ProgressBar.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/ProgressBar.xml @@ -1,6 +1,6 @@ <Type Name="ProgressBar" FullName="Xamarin.Forms.ProgressBar"> - <TypeSignature Language="C#" Value="public class ProgressBar : Xamarin.Forms.View" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ProgressBar extends Xamarin.Forms.View" /> + <TypeSignature Language="C#" Value="public class ProgressBar : Xamarin.Forms.View, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.ProgressBar>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ProgressBar extends Xamarin.Forms.View implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.ProgressBar>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -14,7 +14,11 @@ <Base> <BaseTypeName>Xamarin.Forms.View</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.ProgressBar></InterfaceName> + </Interface> + </Interfaces> <Attributes> <Attribute> <AttributeName>Xamarin.Forms.RenderWith(typeof(Xamarin.Forms.Platform._ProgressBarRenderer))</AttributeName> @@ -77,6 +81,31 @@ Debug.WriteLine ("Animation completed"); </remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.ProgressBar> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.ProgressBar> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.ProgressBar></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="Progress"> <MemberSignature Language="C#" Value="public double Progress { get; set; }" /> <MemberSignature Language="ILAsm" Value=".property instance float64 Progress" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/ScrollView.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/ScrollView.xml index 7f7fe4bb..d3131ec4 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/ScrollView.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/ScrollView.xml @@ -1,6 +1,6 @@ <Type Name="ScrollView" FullName="Xamarin.Forms.ScrollView"> - <TypeSignature Language="C#" Value="public class ScrollView : Xamarin.Forms.Layout, Xamarin.Forms.IScrollViewController" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ScrollView extends Xamarin.Forms.Layout implements class Xamarin.Forms.ILayoutController, class Xamarin.Forms.IScrollViewController" /> + <TypeSignature Language="C#" Value="public class ScrollView : Xamarin.Forms.Layout, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.ScrollView>, Xamarin.Forms.IScrollViewController" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ScrollView extends Xamarin.Forms.Layout implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.ScrollView>, class Xamarin.Forms.ILayoutController, class Xamarin.Forms.IScrollViewController" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -17,6 +17,9 @@ </Base> <Interfaces> <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.ScrollView></InterfaceName> + </Interface> + <Interface> <InterfaceName>Xamarin.Forms.IScrollViewController</InterfaceName> </Interface> </Interfaces> @@ -197,6 +200,31 @@ MainPage = new ContentPage </remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.ScrollView> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.ScrollView> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.ScrollView></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="OnSizeRequest"> <MemberSignature Language="C#" Value="protected override Xamarin.Forms.SizeRequest OnSizeRequest (double widthConstraint, double heightConstraint);" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance valuetype Xamarin.Forms.SizeRequest OnSizeRequest(float64 widthConstraint, float64 heightConstraint) cil managed" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/SearchBar.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/SearchBar.xml index 3c9107a8..89ed58ed 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/SearchBar.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/SearchBar.xml @@ -1,6 +1,6 @@ <Type Name="SearchBar" FullName="Xamarin.Forms.SearchBar"> - <TypeSignature Language="C#" Value="public class SearchBar : Xamarin.Forms.View, Xamarin.Forms.ISearchBarController" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit SearchBar extends Xamarin.Forms.View implements class Xamarin.Forms.ISearchBarController" /> + <TypeSignature Language="C#" Value="public class SearchBar : Xamarin.Forms.View, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.SearchBar>, Xamarin.Forms.ISearchBarController" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit SearchBar extends Xamarin.Forms.View implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.SearchBar>, class Xamarin.Forms.ISearchBarController" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -16,6 +16,9 @@ </Base> <Interfaces> <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.SearchBar></InterfaceName> + </Interface> + <Interface> <InterfaceName>Xamarin.Forms.ISearchBarController</InterfaceName> </Interface> </Interfaces> @@ -308,6 +311,31 @@ public class App : Application <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.SearchBar> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.SearchBar> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.SearchBar></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="Placeholder"> <MemberSignature Language="C#" Value="public string Placeholder { get; set; }" /> <MemberSignature Language="ILAsm" Value=".property instance string Placeholder" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Slider.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Slider.xml index 3ae554ef..4159cd31 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/Slider.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Slider.xml @@ -1,6 +1,6 @@ <Type Name="Slider" FullName="Xamarin.Forms.Slider"> - <TypeSignature Language="C#" Value="public class Slider : Xamarin.Forms.View" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Slider extends Xamarin.Forms.View" /> + <TypeSignature Language="C#" Value="public class Slider : Xamarin.Forms.View, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Slider>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Slider extends Xamarin.Forms.View implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.Slider>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -14,7 +14,11 @@ <Base> <BaseTypeName>Xamarin.Forms.View</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Slider></InterfaceName> + </Interface> + </Interfaces> <Attributes> <Attribute> <AttributeName>Xamarin.Forms.RenderWith(typeof(Xamarin.Forms.Platform._SliderRenderer))</AttributeName> @@ -249,6 +253,31 @@ namespace FormsGallery </remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Slider> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.Slider> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Slider></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="Value"> <MemberSignature Language="C#" Value="public double Value { get; set; }" /> <MemberSignature Language="ILAsm" Value=".property instance float64 Value" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Stepper.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Stepper.xml index 2aae02bb..fefc4705 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/Stepper.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Stepper.xml @@ -1,6 +1,6 @@ <Type Name="Stepper" FullName="Xamarin.Forms.Stepper"> - <TypeSignature Language="C#" Value="public class Stepper : Xamarin.Forms.View" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Stepper extends Xamarin.Forms.View" /> + <TypeSignature Language="C#" Value="public class Stepper : Xamarin.Forms.View, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Stepper>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Stepper extends Xamarin.Forms.View implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.Stepper>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -14,7 +14,11 @@ <Base> <BaseTypeName>Xamarin.Forms.View</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Stepper></InterfaceName> + </Interface> + </Interfaces> <Attributes> <Attribute> <AttributeName>Xamarin.Forms.RenderWith(typeof(Xamarin.Forms.Platform._StepperRenderer))</AttributeName> @@ -303,6 +307,31 @@ <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Stepper> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.Stepper> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Stepper></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="Value"> <MemberSignature Language="C#" Value="public double Value { get; set; }" /> <MemberSignature Language="ILAsm" Value=".property instance float64 Value" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Switch.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Switch.xml index 71bd528d..d90d8df4 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/Switch.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Switch.xml @@ -1,6 +1,6 @@ <Type Name="Switch" FullName="Xamarin.Forms.Switch"> - <TypeSignature Language="C#" Value="public class Switch : Xamarin.Forms.View" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Switch extends Xamarin.Forms.View" /> + <TypeSignature Language="C#" Value="public class Switch : Xamarin.Forms.View, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Switch>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Switch extends Xamarin.Forms.View implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.Switch>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -14,7 +14,11 @@ <Base> <BaseTypeName>Xamarin.Forms.View</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.Switch></InterfaceName> + </Interface> + </Interfaces> <Attributes> <Attribute> <AttributeName>Xamarin.Forms.RenderWith(typeof(Xamarin.Forms.Platform._SwitchRenderer))</AttributeName> @@ -168,6 +172,31 @@ namespace FormsGallery <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Switch> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.Switch> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.Switch></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="Toggled"> <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.ToggledEventArgs> Toggled;" /> <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.ToggledEventArgs> Toggled" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/TabbedPage.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/TabbedPage.xml index 130750fc..87f53b6f 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/TabbedPage.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/TabbedPage.xml @@ -1,6 +1,6 @@ <Type Name="TabbedPage" FullName="Xamarin.Forms.TabbedPage"> - <TypeSignature Language="C#" Value="public class TabbedPage : Xamarin.Forms.MultiPage<Xamarin.Forms.Page>" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit TabbedPage extends Xamarin.Forms.MultiPage`1<class Xamarin.Forms.Page>" /> + <TypeSignature Language="C#" Value="public class TabbedPage : Xamarin.Forms.MultiPage<Xamarin.Forms.Page>, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.TabbedPage>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit TabbedPage extends Xamarin.Forms.MultiPage`1<class Xamarin.Forms.Page> implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.TabbedPage>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -17,7 +17,11 @@ <BaseTypeArgument TypeParamName="T">Xamarin.Forms.Page</BaseTypeArgument> </BaseTypeArguments> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.TabbedPage></InterfaceName> + </Interface> + </Interfaces> <Attributes> <Attribute> <AttributeName>Xamarin.Forms.RenderWith(typeof(Xamarin.Forms.Platform._TabbedPageRenderer))</AttributeName> @@ -247,6 +251,31 @@ class TabbedPageDemoPage2 : TabbedPage <remarks>This returns a new <see cref="T:Xamarin.Forms.Page" /> object that has its <see cref="P:Xamarin.Forms.Page.Title" /> property set to the value of <see cref="M:Object.ToString" /> when called on <paramref name="item" />.</remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.TabbedPage> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.TabbedPage> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.TabbedPage></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="OnParentSet"> <MemberSignature Language="C#" Value="protected override void OnParentSet ();" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance void OnParentSet() cil managed" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/TableView.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/TableView.xml index 1ac76588..2a11f7e0 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/TableView.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/TableView.xml @@ -1,6 +1,6 @@ <Type Name="TableView" FullName="Xamarin.Forms.TableView"> - <TypeSignature Language="C#" Value="public class TableView : Xamarin.Forms.View, Xamarin.Forms.ITableViewController" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit TableView extends Xamarin.Forms.View implements class Xamarin.Forms.ITableViewController" /> + <TypeSignature Language="C#" Value="public class TableView : Xamarin.Forms.View, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.TableView>, Xamarin.Forms.ITableViewController" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit TableView extends Xamarin.Forms.View implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.TableView>, class Xamarin.Forms.ITableViewController" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -16,6 +16,9 @@ </Base> <Interfaces> <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.TableView></InterfaceName> + </Interface> + <Interface> <InterfaceName>Xamarin.Forms.ITableViewController</InterfaceName> </Interface> </Interfaces> @@ -216,6 +219,31 @@ public class App : Application <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.TableView> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.TableView> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.TableView></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="OnBindingContextChanged"> <MemberSignature Language="C#" Value="protected override void OnBindingContextChanged ();" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance void OnBindingContextChanged() cil managed" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/TimePicker.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/TimePicker.xml index 1c5119f1..a15a1f5b 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/TimePicker.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/TimePicker.xml @@ -1,6 +1,6 @@ <Type Name="TimePicker" FullName="Xamarin.Forms.TimePicker"> - <TypeSignature Language="C#" Value="public class TimePicker : Xamarin.Forms.View" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit TimePicker extends Xamarin.Forms.View" /> + <TypeSignature Language="C#" Value="public class TimePicker : Xamarin.Forms.View, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.TimePicker>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit TimePicker extends Xamarin.Forms.View implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.TimePicker>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -14,7 +14,11 @@ <Base> <BaseTypeName>Xamarin.Forms.View</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.TimePicker></InterfaceName> + </Interface> + </Interfaces> <Attributes> <Attribute> <AttributeName>Xamarin.Forms.RenderWith(typeof(Xamarin.Forms.Platform._TimePickerRenderer))</AttributeName> @@ -102,6 +106,31 @@ var beeroclock = new TimePicker () { Time = new TimeSpan (17,0,0) }; </remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.TimePicker> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.TimePicker> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.TimePicker></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="TextColor"> <MemberSignature Language="C#" Value="public Xamarin.Forms.Color TextColor { get; set; }" /> <MemberSignature Language="ILAsm" Value=".property instance valuetype Xamarin.Forms.Color TextColor" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/WebView.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/WebView.xml index 945ba719..15b8d78d 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/WebView.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/WebView.xml @@ -1,6 +1,6 @@ <Type Name="WebView" FullName="Xamarin.Forms.WebView"> - <TypeSignature Language="C#" Value="public class WebView : Xamarin.Forms.View" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit WebView extends Xamarin.Forms.View" /> + <TypeSignature Language="C#" Value="public class WebView : Xamarin.Forms.View, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.WebView>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit WebView extends Xamarin.Forms.View implements class Xamarin.Forms.IElementConfiguration`1<class Xamarin.Forms.WebView>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -14,7 +14,11 @@ <Base> <BaseTypeName>Xamarin.Forms.View</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IElementConfiguration<Xamarin.Forms.WebView></InterfaceName> + </Interface> + </Interfaces> <Attributes> <Attribute> <AttributeName>Xamarin.Forms.RenderWith(typeof(Xamarin.Forms.Platform._WebViewRenderer))</AttributeName> @@ -261,6 +265,31 @@ namespace FormsGallery <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="On<T>"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.WebView> On<T> () where T : Xamarin.Forms.IConfigPlatform;" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.IPlatformElementConfiguration`2<!!T, class Xamarin.Forms.WebView> On<(class Xamarin.Forms.IConfigPlatform) T>() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<T,Xamarin.Forms.WebView></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <InterfaceName>Xamarin.Forms.IConfigPlatform</InterfaceName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="OnBindingContextChanged"> <MemberSignature Language="C#" Value="protected override void OnBindingContextChanged ();" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance void OnBindingContextChanged() cil managed" /> diff --git a/docs/Xamarin.Forms.Core/index.xml b/docs/Xamarin.Forms.Core/index.xml index 5b44aafb..19d77caa 100644 --- a/docs/Xamarin.Forms.Core/index.xml +++ b/docs/Xamarin.Forms.Core/index.xml @@ -197,6 +197,7 @@ <Type Name="Command" Kind="Class" /> <Type Name="Command`1" DisplayName="Command<T>" Kind="Class" /> <Type Name="Condition" Kind="Class" /> + <Type Name="Configuration`2" DisplayName="Configuration<TPlatform,TElement>" Kind="Class" /> <Type Name="Constraint" Kind="Class" /> <Type Name="ConstraintExpression" Kind="Class" /> <Type Name="ConstraintType" Kind="Enumeration" /> @@ -253,8 +254,11 @@ <Type Name="IAppLinks" Kind="Interface" /> <Type Name="IButtonController" Kind="Interface" /> <Type Name="ICellController" Kind="Interface" /> + <Type Name="IConfigElement`1" DisplayName="IConfigElement<T>" Kind="Interface" /> + <Type Name="IConfigPlatform" Kind="Interface" /> <Type Name="IDefinition" Kind="Interface" /> <Type Name="IEffectControlProvider" Kind="Interface" /> + <Type Name="IElementConfiguration`1" DisplayName="IElementConfiguration<TElement>" Kind="Interface" /> <Type Name="IElementController" Kind="Interface" /> <Type Name="IEntryCellController" Kind="Interface" /> <Type Name="IEntryController" Kind="Interface" /> @@ -282,6 +286,7 @@ <Type Name="IPageContainer`1" DisplayName="IPageContainer<T>" Kind="Interface" /> <Type Name="IPageController" Kind="Interface" /> <Type Name="IPlatform" Kind="Interface" /> + <Type Name="IPlatformElementConfiguration`2" DisplayName="IPlatformElementConfiguration<TPlatform,TElement>" Kind="Interface" /> <Type Name="IPlatformEngine" Kind="Interface" /> <Type Name="IRegisterable" Kind="Interface" /> <Type Name="IScrollViewController" Kind="Interface" /> @@ -447,6 +452,26 @@ <Type Name="Ticker" Kind="Class" /> <Type Name="ToolbarTracker" Kind="Class" /> </Namespace> + <Namespace Name="Xamarin.Forms.PlatformConfiguration"> + <Type Name="Android" Kind="Class" /> + <Type Name="iOS" Kind="Class" /> + <Type Name="Windows" Kind="Class" /> + </Namespace> + <Namespace Name="Xamarin.Forms.PlatformConfiguration.AndroidSpecific"> + <Type Name="Application" Kind="Class" /> + <Type Name="WindowSoftInputModeAdjust" Kind="Enumeration" /> + </Namespace> + <Namespace Name="Xamarin.Forms.PlatformConfiguration.iOSSpecific"> + <Type Name="BlurEffectStyle" Kind="Enumeration" /> + <Type Name="NavigationPage" Kind="Class" /> + <Type Name="VisualElement" Kind="Class" /> + </Namespace> + <Namespace Name="Xamarin.Forms.PlatformConfiguration.WindowsSpecific"> + <Type Name="CollapseStyle" Kind="Enumeration" /> + <Type Name="MasterDetailPage" Kind="Class" /> + <Type Name="Page" Kind="Class" /> + <Type Name="ToolbarPlacement" Kind="Enumeration" /> + </Namespace> <Namespace Name="Xamarin.Forms.Xaml"> <Type Name="IMarkupExtension" Kind="Interface" /> <Type Name="IMarkupExtension`1" DisplayName="IMarkupExtension<T>" Kind="Interface" /> @@ -1065,6 +1090,333 @@ </ExtensionMethod> <ExtensionMethod> <Targets> + <Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" /> + </Targets> + <Member MemberName="GetWindowSoftInputModeAdjust"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust GetWindowSoftInputModeAdjust (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Android,Xamarin.Forms.Application> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust GetWindowSoftInputModeAdjust(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Android, class Xamarin.Forms.Application> config) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Android,Xamarin.Forms.Application>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.PlatformConfiguration.AndroidSpecific.Application" Member="M:Xamarin.Forms.PlatformConfiguration.AndroidSpecific.Application.GetWindowSoftInputModeAdjust(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.Android,Xamarin.Forms.Application})" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" /> + </Targets> + <Member MemberName="UseWindowSoftInputModeAdjust"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Android,Xamarin.Forms.Application> UseWindowSoftInputModeAdjust (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Android,Xamarin.Forms.Application> config, Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Android, class Xamarin.Forms.Application> UseWindowSoftInputModeAdjust(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Android, class Xamarin.Forms.Application> config, valuetype Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust value) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Android,Xamarin.Forms.Application></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Android,Xamarin.Forms.Application>" RefType="this" /> + <Parameter Name="value" Type="Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.PlatformConfiguration.AndroidSpecific.Application" Member="M:Xamarin.Forms.PlatformConfiguration.AndroidSpecific.Application.UseWindowSoftInputModeAdjust(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.Android,Xamarin.Forms.Application},Xamarin.Forms.PlatformConfiguration.AndroidSpecific.WindowSoftInputModeAdjust)" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" /> + </Targets> + <Member MemberName="DisableTranslucentNavigationBar"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage> DisableTranslucentNavigationBar (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.NavigationPage> DisableTranslucentNavigationBar(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.NavigationPage> config) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.PlatformConfiguration.iOSSpecific.NavigationPage" Member="M:Xamarin.Forms.PlatformConfiguration.iOSSpecific.NavigationPage.DisableTranslucentNavigationBar(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage})" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" /> + </Targets> + <Member MemberName="EnableTranslucentNavigationBar"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage> EnableTranslucentNavigationBar (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.NavigationPage> EnableTranslucentNavigationBar(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.NavigationPage> config) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.PlatformConfiguration.iOSSpecific.NavigationPage" Member="M:Xamarin.Forms.PlatformConfiguration.iOSSpecific.NavigationPage.EnableTranslucentNavigationBar(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage})" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" /> + </Targets> + <Member MemberName="IsNavigationBarTranslucent"> + <MemberSignature Language="C#" Value="public static bool IsNavigationBarTranslucent (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsNavigationBarTranslucent(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.NavigationPage> config) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>System.Boolean</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.PlatformConfiguration.iOSSpecific.NavigationPage" Member="M:Xamarin.Forms.PlatformConfiguration.iOSSpecific.NavigationPage.IsNavigationBarTranslucent(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage})" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" /> + </Targets> + <Member MemberName="SetIsNavigationBarTranslucent"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage> SetIsNavigationBarTranslucent (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage> config, bool value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.NavigationPage> SetIsNavigationBarTranslucent(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.NavigationPage> config, bool value) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage>" RefType="this" /> + <Parameter Name="value" Type="System.Boolean" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.PlatformConfiguration.iOSSpecific.NavigationPage" Member="M:Xamarin.Forms.PlatformConfiguration.iOSSpecific.NavigationPage.SetIsNavigationBarTranslucent(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.NavigationPage},System.Boolean)" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" /> + </Targets> + <Member MemberName="GetBlurEffect"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle GetBlurEffect (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.VisualElement> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle GetBlurEffect(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.VisualElement> config) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.VisualElement>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.PlatformConfiguration.iOSSpecific.VisualElement" Member="M:Xamarin.Forms.PlatformConfiguration.iOSSpecific.VisualElement.GetBlurEffect(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.VisualElement})" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" /> + </Targets> + <Member MemberName="UseBlurEffect"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.VisualElement> UseBlurEffect (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.VisualElement> config, Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.VisualElement> UseBlurEffect(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.iOS, class Xamarin.Forms.VisualElement> config, valuetype Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle value) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.VisualElement></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.VisualElement>" RefType="this" /> + <Parameter Name="value" Type="Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.PlatformConfiguration.iOSSpecific.VisualElement" Member="M:Xamarin.Forms.PlatformConfiguration.iOSSpecific.VisualElement.UseBlurEffect(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.iOS,Xamarin.Forms.VisualElement},Xamarin.Forms.PlatformConfiguration.iOSSpecific.BlurEffectStyle)" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" /> + </Targets> + <Member MemberName="CollapsedPaneWidth"> + <MemberSignature Language="C#" Value="public static double CollapsedPaneWidth (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 CollapsedPaneWidth(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> config) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>System.Double</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.MasterDetailPage" Member="M:Xamarin.Forms.PlatformConfiguration.WindowsSpecific.MasterDetailPage.CollapsedPaneWidth(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage})" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" /> + </Targets> + <Member MemberName="CollapsedPaneWidth"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> CollapsedPaneWidth (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> config, double value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> CollapsedPaneWidth(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> config, float64 value) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage>" RefType="this" /> + <Parameter Name="value" Type="System.Double" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.MasterDetailPage" Member="M:Xamarin.Forms.PlatformConfiguration.WindowsSpecific.MasterDetailPage.CollapsedPaneWidth(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage},System.Double)" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" /> + </Targets> + <Member MemberName="GetCollapseStyle"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle GetCollapseStyle (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle GetCollapseStyle(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> config) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.MasterDetailPage" Member="M:Xamarin.Forms.PlatformConfiguration.WindowsSpecific.MasterDetailPage.GetCollapseStyle(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage})" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" /> + </Targets> + <Member MemberName="SetCollapseStyle"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> SetCollapseStyle (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> config, Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> SetCollapseStyle(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> config, valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle value) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage>" RefType="this" /> + <Parameter Name="value" Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.MasterDetailPage" Member="M:Xamarin.Forms.PlatformConfiguration.WindowsSpecific.MasterDetailPage.SetCollapseStyle(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage},Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle)" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" /> + </Targets> + <Member MemberName="UsePartialCollapse"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> UsePartialCollapse (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> UsePartialCollapse(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.MasterDetailPage> config) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.MasterDetailPage" Member="M:Xamarin.Forms.PlatformConfiguration.WindowsSpecific.MasterDetailPage.UsePartialCollapse(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.MasterDetailPage})" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" /> + </Targets> + <Member MemberName="GetToolbarPlacement"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement GetToolbarPlacement (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.Page> config);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement GetToolbarPlacement(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.Page> config) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.Page>" RefType="this" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.Page" Member="M:Xamarin.Forms.PlatformConfiguration.WindowsSpecific.Page.GetToolbarPlacement(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.Page})" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" /> + </Targets> + <Member MemberName="SetToolbarPlacement"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.Page> SetToolbarPlacement (this Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.Page> config, Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.Page> SetToolbarPlacement(class Xamarin.Forms.IPlatformElementConfiguration`2<class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.Page> config, valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement value) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.Page></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration<Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.Page>" RefType="this" /> + <Parameter Name="value" Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement" /> + </Parameters> + <Docs> + <param name="config">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.Page" Member="M:Xamarin.Forms.PlatformConfiguration.WindowsSpecific.Page.SetToolbarPlacement(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.Page},Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement)" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> <Target Type="T:System.Collections.Generic.IList`1" /> </Targets> <Member MemberName="Add"> diff --git a/docs/Xamarin.Forms.Core/ns-Xamarin.Forms.PlatformConfiguration.AndroidSpecific.xml b/docs/Xamarin.Forms.Core/ns-Xamarin.Forms.PlatformConfiguration.AndroidSpecific.xml new file mode 100644 index 00000000..656e0a22 --- /dev/null +++ b/docs/Xamarin.Forms.Core/ns-Xamarin.Forms.PlatformConfiguration.AndroidSpecific.xml @@ -0,0 +1,6 @@ +<Namespace Name="Xamarin.Forms.PlatformConfiguration.AndroidSpecific"> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> +</Namespace> diff --git a/docs/Xamarin.Forms.Core/ns-Xamarin.Forms.PlatformConfiguration.WindowsSpecific.xml b/docs/Xamarin.Forms.Core/ns-Xamarin.Forms.PlatformConfiguration.WindowsSpecific.xml new file mode 100644 index 00000000..63544e8e --- /dev/null +++ b/docs/Xamarin.Forms.Core/ns-Xamarin.Forms.PlatformConfiguration.WindowsSpecific.xml @@ -0,0 +1,6 @@ +<Namespace Name="Xamarin.Forms.PlatformConfiguration.WindowsSpecific"> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> +</Namespace> diff --git a/docs/Xamarin.Forms.Core/ns-Xamarin.Forms.PlatformConfiguration.iOSSpecific.xml b/docs/Xamarin.Forms.Core/ns-Xamarin.Forms.PlatformConfiguration.iOSSpecific.xml new file mode 100644 index 00000000..a71a5f8d --- /dev/null +++ b/docs/Xamarin.Forms.Core/ns-Xamarin.Forms.PlatformConfiguration.iOSSpecific.xml @@ -0,0 +1,6 @@ +<Namespace Name="Xamarin.Forms.PlatformConfiguration.iOSSpecific"> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> +</Namespace> diff --git a/docs/Xamarin.Forms.Core/ns-Xamarin.Forms.PlatformConfiguration.xml b/docs/Xamarin.Forms.Core/ns-Xamarin.Forms.PlatformConfiguration.xml new file mode 100644 index 00000000..a6dd1497 --- /dev/null +++ b/docs/Xamarin.Forms.Core/ns-Xamarin.Forms.PlatformConfiguration.xml @@ -0,0 +1,6 @@ +<Namespace Name="Xamarin.Forms.PlatformConfiguration"> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> +</Namespace> |