我有一个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;
}
}
以某种方式不起作用。感谢您的帮助。谢谢。
答案 0 :(得分:2)
您可以尝试将日历放入listView的header。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="450"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ListView x:Name="listView"
Grid.Row="0">
<!--put the listview here-->
<ListView.Header>
<Calendar x:Name="Calendar" >
</ListView.Header>
<ListView.ItemTemplate>
<DataTemplate>
...
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<StackLayout x:Name="stackLayout"
Grid.Row="1">
<Button></Button>
<Button></Button>
</StackLayout>
</Grid>
检查是否符合您的要求。