RelativeLayout имеет ограничения на то, что может быть выражено в XAML - например, вы не можете ссылаться на свойства макета двух разных элементов в одном и том же ограничении. Вы можете определенно выразить больше в C #. В этом случае вы должны иметь возможность делать вещи почти эквивалентно в XAML:
<BoxView x:Name="boxB" Color="Green" WidthRequest="50" HeightRequest="50"
RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToParent,
Property=Width,Factor=1,Constant=-50}"
RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent,
Property=Height,Factor=1,Constant=-50}">
</BoxView>
Недостатком подхода XAML является то, что если вы изменяете WidthRequest или HeightRequest, вам также необходимо изменить ограничения, тогда как в версии C # изменения автоматически учитываются из-за способа определения ограничений.
Вы можете посмотреть на AbsoluteLayout, который (в отличие от RelativeLayout) пытается удерживать элементы на экране. Таким образом, вы можете легко расположить дочерний элемент AbsoluteLayout в правом нижнем углу в XAML:
AbsoluteLayout.LayoutBounds="1,1,-1,-1" AbsoluteLayout.LayoutFlags="PositionProportional"