summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Xamarin.Forms.Controls/CompressedLayout.xaml17
-rw-r--r--Xamarin.Forms.Controls/CompressedLayout.xaml.cs15
-rw-r--r--Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj8
-rw-r--r--Xamarin.Forms.Core/CompressedLayout.cs40
-rw-r--r--Xamarin.Forms.Core/Layout.cs9
-rw-r--r--Xamarin.Forms.Core/Xamarin.Forms.Core.csproj1
-rw-r--r--Xamarin.Forms.Platform.Android/VisualElementPackager.cs73
-rw-r--r--Xamarin.Forms.Platform.Android/VisualElementRenderer.cs11
-rw-r--r--Xamarin.Forms.Platform.Android/VisualElementTracker.cs5
-rw-r--r--Xamarin.Forms.Platform.iOS/RendererPool.cs12
-rw-r--r--Xamarin.Forms.Platform.iOS/VisualElementPackager.cs30
-rw-r--r--Xamarin.Forms.Platform.iOS/VisualElementTracker.cs4
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/CompressedLayout.xml119
-rw-r--r--docs/Xamarin.Forms.Core/index.xml1
14 files changed, 289 insertions, 56 deletions
diff --git a/Xamarin.Forms.Controls/CompressedLayout.xaml b/Xamarin.Forms.Controls/CompressedLayout.xaml
new file mode 100644
index 00000000..52704865
--- /dev/null
+++ b/Xamarin.Forms.Controls/CompressedLayout.xaml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
+ xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+ x:Class="Xamarin.Forms.Controls.CompressedLayout"
+ Padding="0,20,0,0">
+ <StackLayout Padding="6" CompressedLayout.IsHeadless="true">
+ <Label Text="First"/>
+ <StackLayout Padding="6" CompressedLayout.IsHeadless="true">
+ <Label Text="Second"/>
+ <ContentView Padding="6" CompressedLayout.IsHeadless="true" BackgroundColor="Pink" >
+ <Label x:Name="this" Text="{Binding X, Source={x:Reference this}, StringFormat='Label.X:{0}'}"/>
+ </ContentView>
+ <Label Text="Fourth"/>
+ </StackLayout>
+ <Label Text="Fifth"/>
+ </StackLayout>
+</ContentPage> \ No newline at end of file
diff --git a/Xamarin.Forms.Controls/CompressedLayout.xaml.cs b/Xamarin.Forms.Controls/CompressedLayout.xaml.cs
new file mode 100644
index 00000000..d92fd802
--- /dev/null
+++ b/Xamarin.Forms.Controls/CompressedLayout.xaml.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+
+using Xamarin.Forms;
+
+namespace Xamarin.Forms.Controls
+{
+ public partial class CompressedLayout : ContentPage
+ {
+ public CompressedLayout()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj b/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj
index eda7b852..5ac8b40b 100644
--- a/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj
+++ b/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj
@@ -261,6 +261,9 @@
<Compile Include="GalleryPages\MacTwitterDemo.xaml.cs">
<DependentUpon>MacTwitterDemo.xaml</DependentUpon>
</Compile>
+ <Compile Include="CompressedLayout.xaml.cs">
+ <DependentUpon>CompressedLayout.xaml</DependentUpon>
+ </Compile>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
<Import Project="..\.nuspec\Xamarin.Forms.targets" />
@@ -297,6 +300,9 @@
<EmbeddedResource Include="HanselForms\TwitterPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
+ <EmbeddedResource Include="CompressedLayout.xaml">
+ <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
+ </EmbeddedResource>
</ItemGroup>
<Import Project="..\Xamarin.Forms.Controls.Issues\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems" Label="Shared" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
@@ -346,4 +352,4 @@
<Copy SourceFiles="@(ConfigFile)" DestinationFiles="controlgallery.config" Condition="!Exists('controlgallery.config')" />
</Target>
<Import Project="..\packages\Xamarin.Insights.1.12.3\build\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.targets" Condition="Exists('..\packages\Xamarin.Insights.1.12.3\build\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.targets')" />
-</Project> \ No newline at end of file
+</Project>
diff --git a/Xamarin.Forms.Core/CompressedLayout.cs b/Xamarin.Forms.Core/CompressedLayout.cs
new file mode 100644
index 00000000..bd93b560
--- /dev/null
+++ b/Xamarin.Forms.Core/CompressedLayout.cs
@@ -0,0 +1,40 @@
+using System;
+using System.ComponentModel;
+
+namespace Xamarin.Forms
+{
+ public static class CompressedLayout
+ {
+ public static readonly BindableProperty IsHeadlessProperty =
+ BindableProperty.Create("IsHeadless", typeof(bool), typeof(CompressedLayout), default(bool),
+ propertyChanged: OnIsHeadlessPropertyChanged);
+
+ public static bool GetIsHeadless(BindableObject bindable)
+ => (bool)bindable.GetValue(IsHeadlessProperty);
+
+ public static void SetIsHeadless(BindableObject bindable, bool value)
+ => bindable.SetValue(IsHeadlessProperty, value);
+
+ static void OnIsHeadlessPropertyChanged(BindableObject bindable, object oldValue, object newValue)
+ {
+ var ve = bindable as IVisualElementController;
+ if (ve == null)
+ return;
+ if (ve.IsPlatformEnabled)
+ throw new InvalidOperationException("IsHeadless can not be modified when the view is rendered");
+ }
+
+ static readonly BindablePropertyKey HeadlessOffsetPropertyKey =
+ BindableProperty.CreateReadOnly("HeadlessOffset", typeof(Point), typeof(CompressedLayout), default(Point));
+
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public static readonly BindableProperty HeadlessOffsetProperty = HeadlessOffsetPropertyKey.BindableProperty;
+
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public static Point GetHeadlessOffset(BindableObject bindable)
+ => (Point)bindable.GetValue(HeadlessOffsetProperty);
+
+ internal static void SetHeadlessOffset(BindableObject bindable, Point value)
+ => bindable.SetValue(HeadlessOffsetPropertyKey, value);
+ }
+} \ No newline at end of file
diff --git a/Xamarin.Forms.Core/Layout.cs b/Xamarin.Forms.Core/Layout.cs
index 29565b7c..537fd971 100644
--- a/Xamarin.Forms.Core/Layout.cs
+++ b/Xamarin.Forms.Core/Layout.cs
@@ -237,6 +237,11 @@ namespace Xamarin.Forms
double w = Math.Max(0, width - Padding.HorizontalThickness);
double h = Math.Max(0, height - Padding.VerticalThickness);
+ var isHeadless = CompressedLayout.GetIsHeadless(this);
+ var headlessOffset = CompressedLayout.GetHeadlessOffset(this);
+ for (var i = 0; i < LogicalChildrenInternal.Count; i++)
+ CompressedLayout.SetHeadlessOffset((VisualElement)LogicalChildrenInternal[i], isHeadless ? new Point(headlessOffset.X + Bounds.X, headlessOffset.Y + Bounds.Y) : new Point());
+
LayoutChildren(x, y, w, h);
for (var i = 0; i < oldBounds.Length; i++)
@@ -245,9 +250,7 @@ namespace Xamarin.Forms
Rectangle newBound = ((VisualElement)LogicalChildrenInternal[i]).Bounds;
if (oldBound != newBound)
{
- EventHandler handler = LayoutChanged;
- if (handler != null)
- handler(this, EventArgs.Empty);
+ LayoutChanged?.Invoke(this, EventArgs.Empty);
return;
}
}
diff --git a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj
index 3ef9a2a6..ebe3ca46 100644
--- a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj
+++ b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj
@@ -463,6 +463,7 @@
<Compile Include="Xaml\TypeConversionExtensions.cs" />
<Compile Include="Xaml\ValueConverterProvider.cs" />
<Compile Include="PlatformConfiguration\macOSSpecific\Page.cs" />
+ <Compile Include="CompressedLayout.cs" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
<ItemGroup>
diff --git a/Xamarin.Forms.Platform.Android/VisualElementPackager.cs b/Xamarin.Forms.Platform.Android/VisualElementPackager.cs
index 1d886629..e31de7fc 100644
--- a/Xamarin.Forms.Platform.Android/VisualElementPackager.cs
+++ b/Xamarin.Forms.Platform.Android/VisualElementPackager.cs
@@ -18,11 +18,16 @@ namespace Xamarin.Forms.Platform.Android
IVisualElementRenderer _renderer;
- public VisualElementPackager(IVisualElementRenderer renderer)
+ VisualElement _element;
+
+ IElementController ElementController => _element;
+
+ public VisualElementPackager(IVisualElementRenderer renderer, VisualElement element = null)
{
if (renderer == null)
- throw new ArgumentNullException("renderer");
+ throw new ArgumentNullException(nameof(renderer));
+ _element = element ?? renderer.Element;
_childAddedHandler = OnChildAdded;
_childRemovedHandler = OnChildRemoved;
_childReorderedHandler = OnChildrenReordered;
@@ -31,8 +36,6 @@ namespace Xamarin.Forms.Platform.Android
_renderer.ElementChanged += (sender, args) => SetElement(args.OldElement, args.NewElement);
}
- IElementController ElementController => _renderer.Element as IElementController;
-
public void Dispose()
{
Dispose(true);
@@ -67,44 +70,49 @@ namespace Xamarin.Forms.Platform.Android
public void Load()
{
- SetElement(null, _renderer.Element);
+ SetElement(null, _element);
}
void AddChild(VisualElement view, IVisualElementRenderer oldRenderer = null, RendererPool pool = null, bool sameChildren = false)
{
Performance.Start();
- if (_childViews == null)
- _childViews = new List<IVisualElementRenderer>();
+ if (CompressedLayout.GetIsHeadless(view)) {
+ var packager = new VisualElementPackager(_renderer, view);
+ view.IsPlatformEnabled = true;
+ packager.Load();
+ } else {
+ if (_childViews == null)
+ _childViews = new List<IVisualElementRenderer>();
- IVisualElementRenderer renderer = oldRenderer;
- if (pool != null)
- renderer = pool.GetFreeRenderer(view);
- if (renderer == null)
- {
- Performance.Start("New renderer");
- renderer = Platform.CreateRenderer(view);
- Performance.Stop("New renderer");
- }
+ IVisualElementRenderer renderer = oldRenderer;
+ if (pool != null)
+ renderer = pool.GetFreeRenderer(view);
+ if (renderer == null)
+ {
+ Performance.Start("New renderer");
+ renderer = Platform.CreateRenderer(view);
+ Performance.Stop("New renderer");
+ }
- if (renderer == oldRenderer)
- {
- Platform.SetRenderer(renderer.Element, null);
- renderer.SetElement(view);
- }
+ if (renderer == oldRenderer)
+ {
+ Platform.SetRenderer(renderer.Element, null);
+ renderer.SetElement(view);
+ }
- Performance.Start("Set renderer");
- Platform.SetRenderer(view, renderer);
- Performance.Stop("Set renderer");
+ Performance.Start("Set renderer");
+ Platform.SetRenderer(view, renderer);
+ Performance.Stop("Set renderer");
- Performance.Start("Add view");
- if (!sameChildren)
- {
- (_renderer.View as ViewGroup)?.AddView(renderer.View);
- _childViews.Add(renderer);
+ Performance.Start("Add view");
+ if (!sameChildren)
+ {
+ (_renderer.View as ViewGroup)?.AddView(renderer.View);
+ _childViews.Add(renderer);
+ }
+ Performance.Stop("Add view");
}
- Performance.Stop("Add view");
-
Performance.Stop();
}
@@ -117,7 +125,8 @@ namespace Xamarin.Forms.Platform.Android
if (element != null)
{
IVisualElementRenderer r = Platform.GetRenderer(element);
- (_renderer.View as ViewGroup)?.BringChildToFront(r.View);
+ if (r != null)
+ (_renderer.View as ViewGroup)?.BringChildToFront(r.View);
}
}
}
diff --git a/Xamarin.Forms.Platform.Android/VisualElementRenderer.cs b/Xamarin.Forms.Platform.Android/VisualElementRenderer.cs
index 098e85f6..d580a0bb 100644
--- a/Xamarin.Forms.Platform.Android/VisualElementRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/VisualElementRenderer.cs
@@ -283,13 +283,20 @@ namespace Xamarin.Forms.Platform.Android
return;
ReadOnlyCollection<Element> children = ((IElementController)Element).LogicalChildren;
- foreach (Element element in children)
- {
+ UpdateLayout(((IElementController)Element).LogicalChildren);
+ }
+
+ static void UpdateLayout(IEnumerable<Element> children)
+ {
+ foreach (Element element in children) {
var visualElement = element as VisualElement;
if (visualElement == null)
continue;
IVisualElementRenderer renderer = Platform.GetRenderer(visualElement);
+ if (renderer == null && CompressedLayout.GetIsHeadless(visualElement))
+ UpdateLayout(visualElement.LogicalChildren);
+
renderer?.UpdateLayout();
}
}
diff --git a/Xamarin.Forms.Platform.Android/VisualElementTracker.cs b/Xamarin.Forms.Platform.Android/VisualElementTracker.cs
index f4436209..76533005 100644
--- a/Xamarin.Forms.Platform.Android/VisualElementTracker.cs
+++ b/Xamarin.Forms.Platform.Android/VisualElementTracker.cs
@@ -78,8 +78,9 @@ namespace Xamarin.Forms.Platform.Android
VisualElement view = _renderer.Element;
AView aview = _renderer.View;
- var x = (int)_context.ToPixels(view.X);
- var y = (int)_context.ToPixels(view.Y);
+ var headlessOffset = CompressedLayout.GetHeadlessOffset(view);
+ var x = (int)_context.ToPixels(view.X + headlessOffset.X);
+ var y = (int)_context.ToPixels(view.Y + headlessOffset.Y);
var width = Math.Max(0, (int)_context.ToPixels(view.Width));
var height = Math.Max(0, (int)_context.ToPixels(view.Height));
diff --git a/Xamarin.Forms.Platform.iOS/RendererPool.cs b/Xamarin.Forms.Platform.iOS/RendererPool.cs
index 563201f0..e95148da 100644
--- a/Xamarin.Forms.Platform.iOS/RendererPool.cs
+++ b/Xamarin.Forms.Platform.iOS/RendererPool.cs
@@ -108,10 +108,14 @@ namespace Xamarin.Forms.Platform.MacOS
var child = logicalChild as VisualElement;
if (child != null)
{
- var renderer = GetFreeRenderer(child) ?? Platform.CreateRenderer(child);
- Platform.SetRenderer(child, renderer);
-
- _parent.NativeView.AddSubview(renderer.NativeView);
+ if (CompressedLayout.GetIsHeadless(child)) {
+ child.IsPlatformEnabled = true;
+ FillChildrenWithRenderers(child);
+ } else {
+ var renderer = GetFreeRenderer(child) ?? Platform.CreateRenderer(child);
+ Platform.SetRenderer(child, renderer);
+ _parent.NativeView.AddSubview(renderer.NativeView);
+ }
}
}
}
diff --git a/Xamarin.Forms.Platform.iOS/VisualElementPackager.cs b/Xamarin.Forms.Platform.iOS/VisualElementPackager.cs
index fa91cf6a..72ab654a 100644
--- a/Xamarin.Forms.Platform.iOS/VisualElementPackager.cs
+++ b/Xamarin.Forms.Platform.iOS/VisualElementPackager.cs
@@ -13,16 +13,20 @@ namespace Xamarin.Forms.Platform.MacOS
bool _isDisposed;
- IElementController ElementController => Renderer.Element as IElementController;
+ IElementController ElementController => _element;
- public VisualElementPackager(IVisualElementRenderer renderer)
+ public VisualElementPackager(IVisualElementRenderer renderer) : this(renderer, null)
+ {
+ }
+
+ VisualElementPackager(IVisualElementRenderer renderer, VisualElement element)
{
if (renderer == null)
throw new ArgumentNullException(nameof(renderer));
Renderer = renderer;
renderer.ElementChanged += OnRendererElementChanged;
- SetElement(null, renderer.Element);
+ SetElement(null, element ?? renderer.Element);
}
protected IVisualElementRenderer Renderer { get; set; }
@@ -65,16 +69,22 @@ namespace Xamarin.Forms.Platform.MacOS
if (_isDisposed)
return;
- var viewRenderer = Platform.CreateRenderer(view);
- Platform.SetRenderer(view, viewRenderer);
+ if (CompressedLayout.GetIsHeadless(view)) {
+ var packager = new VisualElementPackager(Renderer, view);
+ view.IsPlatformEnabled = true;
+ packager.Load();
+ } else {
+ var viewRenderer = Platform.CreateRenderer(view);
+ Platform.SetRenderer(view, viewRenderer);
- var uiview = Renderer.NativeView;
- uiview.AddSubview(viewRenderer.NativeView);
+ var uiview = Renderer.NativeView;
+ uiview.AddSubview(viewRenderer.NativeView);
- if (Renderer.ViewController != null && viewRenderer.ViewController != null)
- Renderer.ViewController.AddChildViewController(viewRenderer.ViewController);
+ if (Renderer.ViewController != null && viewRenderer.ViewController != null)
+ Renderer.ViewController.AddChildViewController(viewRenderer.ViewController);
- EnsureChildrenOrder();
+ EnsureChildrenOrder();
+ }
}
protected virtual void OnChildRemoved(VisualElement view)
diff --git a/Xamarin.Forms.Platform.iOS/VisualElementTracker.cs b/Xamarin.Forms.Platform.iOS/VisualElementTracker.cs
index 5c84b991..68625a32 100644
--- a/Xamarin.Forms.Platform.iOS/VisualElementTracker.cs
+++ b/Xamarin.Forms.Platform.iOS/VisualElementTracker.cs
@@ -138,8 +138,8 @@ namespace Xamarin.Forms.Platform.MacOS
var scale = (float)view.Scale;
var width = (float)view.Width;
var height = (float)view.Height;
- var x = (float)view.X;
- var y = (float)view.Y;
+ var x = (float)view.X + (float)CompressedLayout.GetHeadlessOffset(view).X;
+ var y = (float)view.Y + (float)CompressedLayout.GetHeadlessOffset(view).Y;
var opacity = (float)view.Opacity;
var isVisible = view.IsVisible;
diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/CompressedLayout.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/CompressedLayout.xml
new file mode 100644
index 00000000..55991a89
--- /dev/null
+++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/CompressedLayout.xml
@@ -0,0 +1,119 @@
+<Type Name="CompressedLayout" FullName="Xamarin.Forms.CompressedLayout">
+ <TypeSignature Language="C#" Value="public static class CompressedLayout" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit CompressedLayout 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="GetHeadlessOffset">
+ <MemberSignature Language="C#" Value="public static Xamarin.Forms.Point GetHeadlessOffset (Xamarin.Forms.BindableObject bindable);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.Point GetHeadlessOffset(class Xamarin.Forms.BindableObject bindable) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>Xamarin.Forms.Point</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="bindable" Type="Xamarin.Forms.BindableObject" />
+ </Parameters>
+ <Docs>
+ <param name="bindable">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="GetIsHeadless">
+ <MemberSignature Language="C#" Value="public static bool GetIsHeadless (Xamarin.Forms.BindableObject bindable);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool GetIsHeadless(class Xamarin.Forms.BindableObject bindable) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="bindable" Type="Xamarin.Forms.BindableObject" />
+ </Parameters>
+ <Docs>
+ <param name="bindable">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="HeadlessOffsetProperty">
+ <MemberSignature Language="C#" Value="public static readonly Xamarin.Forms.BindableProperty HeadlessOffsetProperty;" />
+ <MemberSignature Language="ILAsm" Value=".field public static initonly class Xamarin.Forms.BindableProperty HeadlessOffsetProperty" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>Xamarin.Forms.BindableProperty</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="IsHeadlessProperty">
+ <MemberSignature Language="C#" Value="public static readonly Xamarin.Forms.BindableProperty IsHeadlessProperty;" />
+ <MemberSignature Language="ILAsm" Value=".field public static initonly class Xamarin.Forms.BindableProperty IsHeadlessProperty" />
+ <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="SetIsHeadless">
+ <MemberSignature Language="C#" Value="public static void SetIsHeadless (Xamarin.Forms.BindableObject bindable, bool value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetIsHeadless(class Xamarin.Forms.BindableObject bindable, bool value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="bindable" Type="Xamarin.Forms.BindableObject" />
+ <Parameter Name="value" Type="System.Boolean" />
+ </Parameters>
+ <Docs>
+ <param name="bindable">To be added.</param>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/docs/Xamarin.Forms.Core/index.xml b/docs/Xamarin.Forms.Core/index.xml
index 1b13e335..78ae452a 100644
--- a/docs/Xamarin.Forms.Core/index.xml
+++ b/docs/Xamarin.Forms.Core/index.xml
@@ -182,6 +182,7 @@
<Type Name="ColumnDefinitionCollection" Kind="Class" />
<Type Name="Command" Kind="Class" />
<Type Name="Command`1" DisplayName="Command&lt;T&gt;" Kind="Class" />
+ <Type Name="CompressedLayout" Kind="Class" />
<Type Name="Condition" Kind="Class" />
<Type Name="Configuration`2" DisplayName="Configuration&lt;TPlatform,TElement&gt;" Kind="Class" />
<Type Name="Constraint" Kind="Class" />