FileInfo türünde bir MediaFile özelliği sağlayan bir viewmodel sınıfım var ve özelliği bir MediaElement öğesinin Source özelliğine bağlamak istiyorum.MediaInfo öğesinin FileInfo'ya Bağlanması SourceInfo öğesinin
Sorun, MediaElement öğesinin Source özelliğinin bir Uri beklemesidir, ancak FileInfo sınıfının FullName özelliğine (bağlaçta tanımlı bir dönüştürücüde) erişememesinin, bunun bir SecurityException oluşturacağıdır.
Görüntülerde sorun yok, Görüntü denetiminin FileInfo örneğinin akışını kullanarak dönüştürücüde oluşturabileceğim bir ImageSource nesnesi beklemesine neden oluyor.
Bağlamı nasıl tanımlarım, böylece MediaElementim doğru kaynağı alır? Ya da MediaElement'te dönüştürücü için nasıl geçebilirim, böylece MediaElement üzerinde SetSource (Stream) öğesini çağırabilirim.
ViewModel:
public class ViewModel {
// additional code omitted
public FileInfo MediaFile {get; set;}
}
Dönüştürücü:
public class FileInfoToMediaConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
var file = value as System.IO.FileInfo;
if (MediaResourceFactory.IsImage(file.Extension)) {
System.Windows.Media.Imaging.BitmapImage image = new System.Windows.Media.Imaging.BitmapImage();
image.SetSource(file.OpenRead());
return image;
}
else if (MediaResourceFactory.IsVideo(file.Extension)) {
// create source for MediaElement
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
throw new NotImplementedException();
}
}
Bağlar:
<Image Source="{Binding MediaFile, Converter={StaticResource fileInfoToMediaConverter} }"/>
<MediaElement Source="{Binding MediaFile, Converter={StaticResource fileInfoToMediaConverter}}/>
Teşekkür:
yükseltilmiş izinlerle OOB'de varsayarsak, aşağıdaki gibi bir şey yapabilirsiniz. Uygulama In-Browser'ı çalıştırıyor, bu yüzden FullName'e erişim hiçbir seçenek olmayacak. – Jehof