Dan*_*ral 7 xamarin xamarin.forms
我有一个 CarouselView,我在其中调用具有单独且完全不同的视图的对象。
我的 ContentPage 拥有的唯一元素是 CarouselView 本身,以及上面带有渐变的底部栏(注意下图中的渐变)。
我已经这样做了,当页面的滚动空间变为 0 时(当我滚动到页面末尾时),渐变消失。
问题是,当我在 CarouselView 中的项目之间滑动时,CarouselView 始终保持调用的第一个 View 的高度。
这意味着,在比第一个高度更多的视图中,当向上滚动时(在最底部之后,因此不显示渐变)渐变只会在达到第一页的高度值时再次显示。
在高度小于第一个的视图中,页面将允许我向下滚动,直到达到第一页的高度值,即使页面上没有足够的元素甚至需要滚动。
本质上,我要问的是,是否有一种方法可以在每次滚动完成到 CarouselView 中的另一个视图时以某种方式“刷新”页面的高度,以更小的方式解决我的高度问题视图,以及我在较大视图中的梯度问题。
主要内容页面代码隐藏(渐变)
public double ScrollingSpace
{
get
{
return MainScrollView.ContentSize.Height - MainScrollView.Height;
}
set { }
}
// Removes gradient when scroll is complete
private void OnScrolled(object sender, ScrolledEventArgs e)
{
if (ScrollingSpace <= e.ScrollY) // Touched bottom
EndPageGradient.SetValue(IsVisibleProperty, false); // the view is GONE, not invisible
else
EndPageGradient.SetValue(IsVisibleProperty, true);
}
// Removes gradient if page is not large enough to need scroll
protected override void OnAppearing()
{
if (ScrollingSpace <= 0)
EndPageGradient.SetValue(IsVisibleProperty, false); // the view is GONE, not invisible
}
Run Code Online (Sandbox Code Playgroud)
主要内容页面 CarouselView XAML
<CarouselView
ItemsSource="{Binding ViewList}"
Loop="False">
<CarouselView.ItemTemplate>
<DataTemplate>
<ContentView Content="{Binding .}" />
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
Run Code Online (Sandbox Code Playgroud)
主 ContentPage ViewModel(带有 CarouselView 视图的列表)
ViewList = new List<ContentView>()
{
new Step1(),
new Step2(),
new Step3(),
new Step4(),
new Step5(),
new Step6(),
new Step7(),
new Step8()
};
Run Code Online (Sandbox Code Playgroud)
提前致谢!
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |