Xamarin.forms 如何在XAML中为Xamarin表单的RelativeLayout编写以下语句?

Xamarin.forms 如何在XAML中为Xamarin表单的RelativeLayout编写以下语句?,xamarin.forms,Xamarin.forms,我想在Xamarin表单的RelativeLayout中安排一些控件。 在C#中,我编写了以下代码来归档我的目标: _avatar = new Xamarin.Forms.Image(); _rlTopLayout.Children.Add(_avatar, xConstraint: Constraint.Constant(0), yConstraint: Constraint.Constant(0), widthConstraint: Constraint.Const

我想在Xamarin表单的RelativeLayout中安排一些控件。 在C#中,我编写了以下代码来归档我的目标:

_avatar = new Xamarin.Forms.Image();
_rlTopLayout.Children.Add(_avatar, 
    xConstraint: Constraint.Constant(0),
    yConstraint: Constraint.Constant(0),
    widthConstraint: Constraint.Constant(78),
    heightConstraint: Constraint.Constant(94)
);
_roundedBorderEntry = new Xamarin.Forms.Entry();
_rlTopLayout.Children.Add(_roundedBorderEntry,
    xConstraint: Constraint.RelativeToView(_avatar, (parent, sibling) => sibling.X + sibling.Width),
    yConstraint: Constraint.RelativeToView(_avatar, (parent, sibling) => sibling.Y),
    widthConstraint: Constraint.RelativeToView(_avatar, (parent, sibling) => parent.Width - sibling.Width),
    heightConstraint: null
);
如何使用XAML布局文件存档此文件?特别是用下面的表达:

xConstraint: Constraint.RelativeToView(_avatar, (parent, sibling) => sibling.X + sibling.Width)
widthConstraint: Constraint.RelativeToView(_avatar, (parent, sibling) => parent.Width - sibling.Width)
heightConstraint: null

在代码中创建
RelativeLayout
约束肯定比在XAML中更容易。您可以看到开发人员讨论可用语法的地方


然而,对于你的情况来说,这可能还不够。请参阅MikeEEE的帖子,他创建了一个自定义标记扩展来处理特殊情况。他在他的GitHub和示例页面上发布了示例。

XAML,假设图像是100乘50:

<RelativeLayout x:Name="relativeLayout" HorizontalOptions="FillAndExpand" >
  <Image x:Name="image" Source="100x50.png" WidthRequest="100" HeightRequest="50"/>
  <Entry x:Name="entry" Text="enter text here"
         RelativeLayout.XConstraint=
             "{ConstraintExpression Type=RelativeToView, ElementName=image, 
                                    Property=Width, Factor=1, Constant=0}"
         RelativeLayout.WidthConstraint=
             "{ConstraintExpression Type=RelativeToParent,
                                    Property=Width, Factor=1, Constant=-100}" />
</RelativeLayout>

请注意,在XAML
sibling
中,使用
x:Name
ElementName=ElementName
构造引用命名元素