【发布时间】:2019-05-01 11:38:31
【问题描述】:
我有一个 xamarin.forms 应用程序,其中包含顶部的日历视图和下方的列表视图。
我想要实现的是,当该日历视图下的列表视图向下滚动时,日历应该隐藏,以便列表视图占据整个屏幕。当列表视图向上滚动时,日历应该重新出现到以前的状态。这可能吗使用 xamarin,表单?
我的 xaml
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="0.8*"/>
<RowDefinition Height="0.25*"/>
</Grid.RowDefinitions>
<Calendar x:Name="Calendar"
Grid.Row="0">
</Calendar>
<ListView x:Name="listView"
ItemAppearing="Handle_ItemAppearing"
Grid.Row="1">
<ListView.ItemTemplate>
...
</ListView.ItemTemplate>
</ListView>
<StackLayout x:Name="stackLayout"
Grid.Row="2">
<Button></Button>
<Button></Button>
</StackLayout>
</Grid>
我的 xaml.cs 文件和我的尝试
public partial class MainPage : ContentPage
{
public ObservableCollection<string> Items { get; set; } = new ObservableCollection<string>();
int lastItemIndex;
int currentItemIndex;
public MainPage()
{
...
}
void Handle_ItemAppearing(object sender, ItemVisibilityEventArgs e)
{
string item = e.Item as string;
currentItemIndex = Items.IndexOf(item);
if (currentItemIndex > lastItemIndex)
{
Calendar.IsVisible = false;
}
else
{
Calendar.IsVisible = true;
}
lastItemIndex = currentItemIndex;
}
}
不知何故它不起作用。任何帮助表示赞赏。在此先感谢。
【问题讨论】:
-
我会尝试分别测试这两个功能。当您期望它(在您的列表视图中向下滚动)时,您可以在 Handle_ItemAppearing 中打断点吗?你能手动隐藏你的日历吗?通过设置将 IsVisible 设置为 false 的计时器?
-
@Mouse On Mars 兄弟我可以手动隐藏日历视图。但是它会为整个日历空间留下一个白屏。列表视图仍在其位置,而不是整个区域
-
@AndroDevil 我可以知道你用的是哪个日历吗?
-
@PrissyEve 嗨,我用过同步压延机
-
syncfusion 是付费日历还是免费的