WPF Media.Source Uri Sorunu

Hello

Hectopat
Katılım
2 Temmuz 2014
Mesajlar
555
Makaleler
2
Daha fazla  
Cinsiyet
Erkek
Bu sorunla bayağıdır uğraşıyorum ama çözemedim, Filoİnfo sınıfını denedim bana daha kolay geldi ama yinede Uri'ye yaranamıyoruz. :) Aklıma önce dosya ismini öne alıp yolunu sona bırakmak geldi, bunu denedim ama Uri direkt olarak Listbox'daki seçilen yazıyı alıdığı için haliyle dosyayı bulamıyor. @Fatih Apaydın hocam yardım edebilirseniz çok güzel olur.
Kod:
 private void listbox2_Drop(object sender, DragEventArgs e)
        {

            try
            {
                string[] a = (string[])(e.Data.GetData(DataFormats.FileDrop, false));

                foreach (var names in a)
                {
                    FileInfo fileInfo = new FileInfo(names);
                    if (fileInfo.Extension == ".MP3" ||
                        fileInfo.Extension == ".mp3")
                    {
                  
                     
                        listbox2.Items.Add( fileInfo.Name);
           
                    }

                }
            }

            catch (Exception)
            {

            }
       }



        private void listbox2_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {

            object listboxİtems = listbox2.SelectedItem;
            if (listboxİtems != null)
            {
               // Hata veren satır.
                media2.Source = new Uri(listboxİtems.ToString());
                media2.Play();
            
            }
        
        }
 
Son düzenleyen: Moderatör:
Kod:
listbox2.Items.Add( fileInfo.Name);
Listbox'a direk dosyanın adını eklemişsiniz.

Kod:
listbox2.Items.Add(fileInfo);
Bu şekilde yapıp Listbox Xaml dosyasında DisplayMemberPath = "Name" yazıp gösterirseniz daha sonrasında Listbox elemanlarını bu şekilde çağırma şansınız olur. Sizin izlediğiniz yolda ise FullName çağırmak demek fileInfo.Name.FullName çağırmakla aynıdır. Halbuki biz fileInfo.FullName değişkenini arıyoruz.

Kod:
media2.Source = new Uri(listboxİtems.FullName);

Kodu daha fazla geliştirmek istiyorsanız direk ListBox.Items.Add ile verileri direk ListBox'a yazmak yerine ListBox'ı Binding ile CollectionViewSource gibi bir ara katmana bağlayabilirsiniz.
 
Son düzenleme:
Yanlış anlamamışsam verdiğiniz bilgilerde direkt dosya yolu ile çalışıyor. Benim istediğim sadece dosya adı ile çalıştırması, dosya yolu ile ben aşağıda ki gibi çalıştırıyorum;
Kod:
media2.Source = new Uri(listbox2.SelectedItem.ToString());
media2.Play();
Uğraşınız için sağolun. @Fatih Apaydın sizinde mesajınızı bekliyorum.
 
Sadece dosya adıyla çalışmaz, dosyanın tam olarak nerde olduğunu bilmesi lazım. Ancak bütün dosyalar aynı klasörde diye düşünürsek o zaman o klasörün tam yolu (örneğin "c:\mp3") + dosya adı + ".mp3" şeklinde yapabilirsiniz.

Siz benim gösterdiğim yöntem ile listboxta uzun yazılar çıkacak zannediyorsanız, yanılıyorsunuz.
Displaymemberpath bu noktada işe yarıyor. Yani listboxta sadece dosya adı gözükecek ama listbox elemanını çağırdığımızda fileinfo sınıfını çağıracak böylece dosyanın tam yolunu media bileşenine aktarabileceğiz. Media değişkeniniz dosyanın tam yolunu bilmeden dosyayı çalıştıramaz.
 
Son düzenleme:
Uyarı! Bu konu 9 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı