c# - 如何将 ScrollView 内的视觉元素 HeightRequest 绑定为等于页面的高度?
问题描述
我正在尝试将 BoxView 的高度设置为页面的高度(为此我使用 Xamarin Essentials)。BoxView 包含在 StackLayout 中,而 StackLayout 包含在 ScrollView 中,如下所示:
<ScrollView Orientation="Vertical">
<StackLayout>
<BoxView HeightRequest="{Binding height}" x:Name="TestBox" BackgroundColor="Orange" />
<BoxView BackgroundColor="Red" HeightRequest="200" />
</StackLayout>
</ScrollView>
BoxView 的 HeightRequest 是在我的代码后面定义的。
我已经尝试在我的和页面的构造函数中将此变量设置为设备的高度OnAppearing()
,但是两次 boxview 都没有填满整个页面,这是我尝试过的:
public Double height;
public MainPage()
{
InitializeComponent();
height = DeviceDisplay.MainDisplayInfo.Height / DeviceDisplay.MainDisplayInfo.Density;
}
结果:
在设置高度后,我也尝试添加以下内容,但这也不起作用:
this.ForceLayout();
但是,如果我手动设置 HeightRequest,我会得到我想要的结果(但是,这仅适用于我的特定设备):
<BoxView HeightRequest="720" x:Name="TestBox" BackgroundColor="Orange" />
如果 BoxView 包含在 ScrollView 中,如何将 BoxView 的高度绑定到页面的高度?
解决方案
使用 x:reference绑定Height
滚动视图父级(ContentPage 的直接子级)的属性。它对我有用。
<ScrollView x:Name="parentLayout">
<StackLayout>
<BoxView
BackgroundColor="LightBlue"
HeightRequest="{Binding Height, Source={x:Reference parentLayout}}"/>
<Label
Text="Below BoxView"/>
<Label
Text="Below BoxView"/>
<Label
Text="Below BoxView"/>
<Label
Text="Below BoxView"/>
<Label
Text="Below BoxView"/>
<Label
Text="Below BoxView"/>
<Label
Text="Below BoxView"/>
</StackLayout>
</ScrollView>
iOS中的UI结果(空白是由于安全区域)
希望这可以帮助你。如果这不是您的要求,请发表评论。
推荐阅读
- xamarin.android - 我无法在 Xamarin.android 项目中安装 FM.IceLink.WebRTC
- android - 检查片段中的 savedInstanceState 状态
- jquery - 2到3小时后Jquery ajax请求401错误
- java - 在不知不觉中专注于另一个领域
- spring - 查询dsl连接条件
- spring - Thymeleaf 在 th:text 和 th:field 中的日期格式相同
- java - 使用按钮在 GUI 中增加 for 循环
- postgresql - 基于数据的postgres搜索列
- jquery - 具有双轴和组栏的 D3 图表
- angular - 使用 ADAL Angular 6 Wrapper 调用 API