Слайд-меню будет зависеть только от того, какие пакеты вы хотите использовать, или от того, хотите ли вы создавать анимацию с помощью ResourceDictionary / VisualStateManager, но чтобы динамически уменьшить размер страницы вдвое, вы можете использовать что-то вроде:
XAML:
<Page x:Name="Page" HeightRequest="{Binding PageHeight, Mode=TwoWay}"></Page>
<Menu x:Name="Menu" HeightRequest="{Binding MenuHeight}"></Menu>
XAML.CS:
public class YourPage : YourType //(ContentViews for me)
private YourViewModel ViewModel => (YourViewModel)this.BindingContext;
public YourPage()
{
this.BindingContext = YourVM;
}
VM.CS:
public class YourViewModel : INotifyPropertyChanged
private double _pageHeight;
public double PageHeight
{
set
{
if (_pageHeight != value)
{
_pageHeight = value;
OnPropertyChanged("PageHeight");
PageHeightChanged("PageHeight");
}
}
get
{
return _pageHeight;
}
}
private double _menuHeight;
public double MenuHeight
{
set
{
if (_menuHeight != value)
{
_menuHeight = value;
OnPropertyChanged("MenuHeight");
}
}
get
{
return _menuHeight;
}
}
private void PageHeightChanged()
{
Menu.HeightRequest = Page.Height/2;
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}