none
Изменения в Image.Source RRS feed

  • Вопрос

  • Здравствуйте!
    Как можно отследить изменения в источнике объекта Image?
    Пробовал подписаться на обработчик ImageOpened, но оно вроде вообще не работает или я не понимаю его работу!

Ответы

  • Да, к сожалению данное событие не работает, если изображение задается из потока, как у вас. Исходя из дискуссии How to trigger Image.ImageOpened event from stream? вам нужно создать свое событие или метод и вызывать его после изменения Source. Еще дополнительной проверкой может служить размеры BitmapImage, если они не 0, то значит изображение загрузилось и можно вызывать свое событие. И также проверяйте результат openfile.ShowDialog(), нажал ли пользователь ОК или Отмену


    Для связи [mail]
    • Помечено в качестве ответа saiman_OK 6 мая 2011 г. 10:42
    Модератор

Все ответы

  • Оно должно вызываться перед тем как Image отобразит картинку, странно что у вас не работает, должно работать. Как происходит установка/смена Source для Image?


    Для связи [mail]
    Модератор
  • Вообщем в xaml объявил переменную image1 и с помощью данного кода открываю картинки:

     private void button1_Click(object sender, RoutedEventArgs e)

            {

                BitmapImage bi = new BitmapImage ();

                OpenFileDialog openfile = new OpenFileDialog { Filter = "|*.jpg" };

                openfile.ShowDialog();

                bi.SetSource(openfile.File.OpenRead());

                image1.Source = bi;       

            }

    В конструкторе MainPage подписываюсь на событие:

    image1.ImageOpened += new EventHandler<RoutedEventArgs>(image1_ImageOpened);

    и в обработчике уже для наглядности пишу:

    void image1_ImageOpened(object sender, RoutedEventArgs e)

    {

            MessageBox("Fail");

    }

  • Да, к сожалению данное событие не работает, если изображение задается из потока, как у вас. Исходя из дискуссии How to trigger Image.ImageOpened event from stream? вам нужно создать свое событие или метод и вызывать его после изменения Source. Еще дополнительной проверкой может служить размеры BitmapImage, если они не 0, то значит изображение загрузилось и можно вызывать свое событие. И также проверяйте результат openfile.ShowDialog(), нажал ли пользователь ОК или Отмену


    Для связи [mail]
    • Помечено в качестве ответа saiman_OK 6 мая 2011 г. 10:42
    Модератор