Это похоже на серьезную ошибку:
private void LayoutRoot_Drop(object sender, DragEventArgs e)
{
if ((e.Data != null) && (e.Data.GetDataPresent(DataFormats.FileDrop)))
{
FileInfo[] files = (FileInfo[])e.Data.GetData(DataFormats.FileDrop);
using (FileStream fileStream = files[0].OpenRead())
{
//Code reaching this point.
BitmapImage bmpImg = new BitmapImage();
bmpImg.ImageOpened += new EventHandler<RoutedEventArgs>(bmpImg_ImageOpened);
bmpImg.ImageFailed += new EventHandler<ExceptionRoutedEventArgs>(bmpImg_ImageFailed);
try
{
bmpImg.SetSource(fileStream);
}
catch
{
//Code dosen't reach here.
}
}
}
}
void bmpImg_ImageFailed(object sender, ExceptionRoutedEventArgs e)
{
//Code dosen't reach here.
}
void bmpImg_ImageOpened(object sender, RoutedEventArgs e)
{
//Code dosen't reach here.
}
Я испытываю очень странный вид. Запустив этот код на моем компьютере , он работает - когда вы перетаскиваете JPG на LayoutRoot, я могу взломать bmpImg_ImageOpened ().
Но на другой машине это не сработает - при перетаскивании JPG я могу прервать событие отбрасывания, но после SetSource () ничего не происходит: не генерируются исключения и не выполняются обратные вызовы Вызваны.
Я попробовал его на другой машине, и он тоже не работал.
редактировать:
На всех машинах при добавлении класса Image и установке его свойства Source в bitmapImage изображение отображается нормально. поэтому я думаю, что это проблема с обратными вызовами. Этого недостаточно, потому что мне все еще нужны эти события.
Я тут бьюсь головой, что бы это могло быть?