Итак, я написал функцию, которая изменяет высоту StackLayout при прокрутке. Проблема в том, что я получаю блестки при прокрутке.
изменение высоты не плавное, когда я прокручиваю медленно.
Вот мой код, который я сейчас использую.
public void BindGrid(GridItems grid)
{
var height = 150;
ItemHeight = height;
grid.OnScroll += (scrolledY) =>
{
ItemHeight = Math.Max(0, height - scrolledY);
if (ItemHeight <= 0 || Serie == null)
ItemVisible = false;
else ItemVisible = true;
};
}
Вот содержимое xaml
<StackLayout x:Name="lastReaded"
IsVisible="{Binding ItemVisible}"
HeightRequest="{Binding ItemHeight}"
BackgroundColor="White"
VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="110"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30*"></ColumnDefinition>
<ColumnDefinition Width="70*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Image x:Name="imgLastReadedImage" Aspect="AspectFit" Source="{Binding Serie.ImageUrl, Converter={StaticResource ImageSource}}" Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" />
<Label Style="{StaticResource itemsHeader}" Grid.Row="0" Grid.Column="1" Text="{Binding Serie.SerieName}" x:Name="lblLastReadedTitle" />
<controls:CustomButton Clicked="btnContinueRead_Clicked" HorizontalOptions="StartAndExpand" VerticalOptions="Start" Padding="5" x:Name="btnContinueRead" Grid.Row="1" Grid.Column="1" Style="{StaticResource ButtonContainer}" Text="{StaticResource continue}" />
</Grid>
</StackLayout>
<StackLayout BackgroundColor="White" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
<controls:GridItems ItemCount="3"
ItemsMargin="0,0,0,100"
SelectedItemChanged="DataGrid_SelectedItemChanged"
ItemHeight="160"
ItemWidth="100"
x:Name="dataGrid"
ItemDisplayCount="12"
OnLastItemViewd="DataGrid_OnLastItemViewd">
<controls:GridItems.ItemTemplate>
.....