C# как воспроизвести носитель после выбора элемента в списке (WPF)
У меня есть две страницы в моем окне,на первой странице Я пишу данные для моего загруженного музыкального видео,и после нажатия на кнопку Сохранить оно сохраняется в списке, а затем добавляется в список, но в списке мне показывают только название этой песни и изображение для песни.список находится на второй странице,когда элемент уже добавляется,когда я нажимаю на любой элемент, чтобы увидеть видео этого элемента в правой части вне списка.Как я могу решить эту проблему?
Это первая страница после загрузки видео и картинки[^]
Это вторая страница, элемент уже добавлен в список[^]
Теперь мне нужно,когда я нажимаю на элемент, он должен показать мне видео этого элемента` Бейонсе - ореол в Медиаэлементе. Пожалуйста, помогите мне.
//My media class public class Media { public string SongName { get; set; } public string Album { get; set; } public string SingerName { get; set; } public Uri Medias { get; set; } public Uri Image { get; set; } public Media(string SongName, string Album, string SingerName, Uri Medias, Uri Image) { this.SongName = SongName; this.Album = Album; this.SingerName = SingerName; this.Medias = Medias; this.Image = Image; } } //Page 1 public partial class Page1 : Page { public Uri n; public Uri m; public Page1() { InitializeComponent(); } //Button for uploading video private void Button_Click(object sender, RoutedEventArgs e) { OpenFileDialog op = new OpenFileDialog(); if (op.ShowDialog() == true) { mp.Source = new Uri(op.FileName); mp.Play(); } this.m = new Uri(op.FileName); } //Button for saving datas in list private void Button_Click_1(object sender, RoutedEventArgs e) { Media x = new Media(txt1.Text,txt2.Text, txt3.Text,m,n); Page2.videos.Add(x); } //Button for uploading image private void Button_Click_3(object sender, RoutedEventArgs e) { OpenFileDialog op = new OpenFileDialog(); op.Title = "Select a picture"; op.Filter = "All supported graphics|*.jpg;*.jpeg;*.png|" + "JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|" + "Portable Network Graphic (*.png)|*.png"; if (op.ShowDialog() == true) { image1.Source = new BitmapImage(new Uri(op.FileName)); } this.n = new Uri(op.FileName); } } //Page 2 public partial class Page2 : Page { static public ObservableCollection<Media> videos { get; } = new ObservableCollection<Media>(); //This shows items in ListBox` Name and Image public Page2() { InitializeComponent(); foreach (Media item in Page2.videos) { lb.ItemsSource = videos; } } //This is my problem, Video doesn't play when i click on item private void lb_SelectionChanged(object sender, SelectionChangedEventArgs e) { foreach (Media items in Page2.videos) { if (lb.SelectedItem != null) { m_element = items.Medias; m_element.Play(); } } } }
Что я уже пробовал:
// Page 2 XAML <Page x:Class="Suren_MaterialDesign.Page2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:Suren_MaterialDesign" mc:Ignorable="d" d:DesignHeight="515" d:DesignWidth="1010" Title="Page2"> <Page.Resources> <DataTemplate x:Key="Songs"> <StackPanel Height="110" Width="310"> <WrapPanel HorizontalAlignment="Center"> <Label VerticalAlignment="Center" HorizontalAlignment="Center" Content="{Binding Path=SongName}"/> </WrapPanel> <Image Source="{Binding Path=Image}" Width="200" Height="100"/> </StackPanel> </DataTemplate> </Page.Resources> <Grid Background="#FF35A69C"> <GroupBox Background="White" Header="My Songs" FontSize="20" Height="460" Width="425" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20,20,0,0"> <ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" Name="lb" Width="425" ItemTemplate="{StaticResource Songs}" Margin="0,-15,0,-8"> <ListBox.ItemsPanel> <ItemsPanelTemplate> <WrapPanel/> </ItemsPanelTemplate> </ListBox.ItemsPanel> </ListBox> </GroupBox> <MediaElement Source="{Binding Path=Medias}" x:Name="m_element" Height="400" Width="400" HorizontalAlignment="Right" Margin="30"/> </Grid> </Page>