Как узнать, отображается изображение или нет - PullRequest
0 голосов
/ 08 мая 2020

В моем приложении UWP мне нужно показать некоторые изображения в средстве просмотра прокрутки, как показано ниже. Но иногда некоторые изображения не отображаются, просто белый пробел.

Я хочу знать, почему это произойдет? И как это решить?

Например, как определить, что изображение не отображается с помощью кода? А как потом повторно загрузить url изображения? Спасибо!

<Grid>
    <ScrollViewer x:Name="scrollViewer" Width="1835" Height="556"
                          VerticalScrollBarVisibility="Disabled" VerticalScrollMode="Disabled" 
                          HorizontalScrollBarVisibility="Hidden" HorizontalScrollMode="Enabled"
                          Margin="85,232,0,292">
        <StackPanel x:Name="stackPanel" Orientation="Horizontal">
            <Image Source="https://audiores.lenovo.com.cn/audiores/skill/cook/food/25_bailuobuzhusunshuiyatang.jpg"/>
            <Image Source="https://audiores.lenovo.com.cn/audiores/skill/cook/food/26_jiachangpaiguyumitang.jpg"/>
            <Image Source="https://audiores.lenovo.com.cn/audiores/skill/cook/food/27_caoguxiaren.jpg"/>
            <Image Source="https://audiores.lenovo.com.cn/audiores/skill/cook/food/28_xihuluchaoroupian.jpg"/>
            <Image Source="https://audiores.lenovo.com.cn/audiores/skill/cook/food/29_qingdouchaoxuecai.jpg"/>
            <Image Source="https://audiores.lenovo.com.cn/audiores/skill/cook/food/30_lancairoumozhengdoufu.jpg"/>
            <Image Source="https://audiores.lenovo.com.cn/audiores/skill/cook/food/31_xiaochaoxianniudu.jpg"/>
            <Image Source="https://audiores.lenovo.com.cn/audiores/skill/cook/food/32_yeshanjiaozhengcaoyu.jpg"/>
            <Image Source="https://audiores.lenovo.com.cn/audiores/skill/cook/food/33_qincaichaoxianggu.jpg"/>
            <Image Source="https://audiores.lenovo.com.cn/audiores/skill/cook/food/34_suanmiaochaolachang.jpg"/>
            <Image Source="https://audiores.lenovo.com.cn/audiores/skill/cook/food/35_shangtangbocai.jpg"/>
            <Image Source="https://audiores.lenovo.com.cn/audiores/skill/cook/food/36_yumiwosunchaoxiaren.jpg"/>
        </StackPanel>
    </ScrollViewer>
</Grid>

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Может быть, вы можете попробовать HN.Controls.ImageEx . Это более мощный элемент управления изображениями, чем Image и ImageEx от Microsoft.

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

0 голосов
/ 08 мая 2020

Вы можете установить для каждого изображения экземпляр класса Windows .UI.Xaml.Media.Imaging.BitmapImage на источник изображения, и вы можете подписаться на событие BitmapImage.ImageFailed .

private void image_Loaded(object sender, RoutedEventArgs e)
{
    var bitmapImage = new BitmapImage();
    bitmapImage.UriSource = new Uri("https://audiores.lenovo.com.cn/audiores/skill/cook/food/25_bailuobuzhusunshuiyatang.jpg");
    bitmapImage.ImageFailed += BitmapImage_ImageFailed;

    if (sender is Image image)
    {
         image.Source = bitmapImage;
    }
}

private void BitmapImage_ImageFailed(object sender, ExceptionRoutedEventArgs e) 
{
    BitmapImage bitmapImage = sender as BitmapImage;
    bitmapImage.UriSource = new Uri("ms-appx:///Images/fallback.png");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...