Обновление проблемы изображения WPF под SIlverlight 4.0 - PullRequest
1 голос
/ 10 января 2012

Когда моя страница загружается и я нажимаю button1, я могу получить изображение и увидеть его.

Но когда я нажимаю на него во второй раз, он вообще не работает.Я отладил button1_Click(...) и уверен, что imageData != null.

Я действительно не могу понять, в чем дело ... Пожалуйста, помогите мне!

private void button1_Click(object button, RoutedEventArgs e)
{
    Guid sid = Guid.Parse("087462df-e4b6-484c-879e-cccc37b4c1f4");
    EntityQuery<Screenshot> screen = this._myDomainContext.GetScreenshotQuery(sid);
    this._myDomainContext.Load(screen).Completed += (sender, args) =>
    {
        try
        {
            byte[] imageData = (((LoadOperation<Screenshot>)sender).Entities.FirstOrDefault()).Screen;
            if (imageData != null)
            {
                BitmapImage img = Utilities.Graphics.GetImage(imageData);
                img.CreateOptions = BitmapCreateOptions.IgnoreImageCache;

                image1.Source = null;
                image1.Source = img;
            }
        }
        catch
        {
        }

    };
}

и

public static BitmapImage GetImage(byte[] rawImageBytes)
{
    BitmapImage imageSource = null;

    try
    {
        using (MemoryStream stream = new MemoryStream(rawImageBytes))
        {
            stream.Seek(0, SeekOrigin.Begin);
            BitmapImage b = new BitmapImage();
            b.SetSource(stream);
            imageSource = b;    
        }
    }
    catch  
    {
    }

    return imageSource;
}

Ответы [ 2 ]

1 голос
/ 10 января 2012

Попробуйте изменить перегрузку Load:


this._myDomainContext.Load(screen, LoadBehavior.RefreshCurrent, true).Completed+= ...

0 голосов
/ 10 января 2012

Я не совсем уверен в причине, если ваша проблема, но у меня есть несколько указателей на код в отношении использования BitmapImage.

  1. Нет необходимости устанавливатьсвойство image1.Source для null перед присвоением его фактическому источнику.
  2. Не удаляйте поток, передаваемый в BitmapImage, в случае, если элемент управления пытается прочитать его.
  3. Я лично использую BeginInit(...), StreamSource и EndInit(...) при работе с BitmapImage.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...