Как реализовать нижнюю панель музыкального плеера
Я перерыл весь интернет, и действительно не понимаю как можно сделать такую реализацию:
Я имею ввиду только нижнюю панель, которая будет появляться по клику и выводить текущую Selection Music
Код коллекции mp3:
<CollectionView Grid.Row="1" Margin="20,0" ItemsSource="{Binding MusicList}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
SelectionMode="Single" SelectedItem="{Binding SelectedMusic}" SelectionChangedCommand="{Binding IsVisibleCommand}">
<CollectionView.ItemsLayout>
<LinearItemsLayout Orientation="Vertical" ItemSpacing="1"/>
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate >
<Grid Padding="15,10" HorizontalOptions="FillAndExpand">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackLayout VerticalOptions="Center" >
<Label Text="{Binding Title}" TextColor="Black" FontSize="17"/>
<Label Text="{Binding Artist}" TextColor="Black" FontSize="12" Opacity="0.5"/>
</StackLayout>
<Image Source="download.png" Opacity="0.7" WidthRequest="15" HeightRequest="15" HorizontalOptions="End" VerticalOptions="Center" Margin="0,0,5,0" />
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
XAML страницы с панелью плеера:
<StackLayout VerticalOptions="End">
<Grid Padding="15,25" HorizontalOptions="FillAndExpand" BackgroundColor="White">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackLayout VerticalOptions="Center">
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Command="{Binding OpenPlayer}"></TapGestureRecognizer>
</StackLayout.GestureRecognizers>
<Label Text="{Binding RecentMusic.Artist}" TextColor="Black" FontSize="17"></Label>
</StackLayout>
<Image Source="playBlack.png" WidthRequest="15" HeightRequest="15" HorizontalOptions="End" VerticalOptions="Center" Margin="0,0,5,0" />
</Grid>
</StackLayout>
Я пытался использовать модальные страницы:
public ICommand IsVisibleCommand => new Command(IsVisible);
async void IsVisible()
{
if (selectedMusic!=null)
{
await App.Current.MainPage.Navigation.PushModalAsync(new BottomPlayerView());
}
}
но это не то что мне нужно т.к. новая страница открывается поверх старой, а старая просто не отображается. Мне требуется поместить две страницы на одной и связать их логикой
Источник: Stack Overflow на русском