Картинка по умолчанию Silverlight 4

Думаю, у многих появляется ситуация с условием если картинки нету или картинка не загрузилась, указать defualt картинку.

Первое что приходит в голову это использовать Convert который будет заниматься этим делом.
Но увы я оказался не прав, этот вариант не очень хороший. Так как для этого действия есть специальное средство.

Есть у контрола Image событие ImageFailed – который происходит, когда картинка не загрузиться.

Использование:

<Image MaxHeight="50" x:Name="image" Source="{Binding photo">
	<i:Interaction.Triggers>
		<i:EventTrigger EventName="ImageFailed">
			<ei:ChangePropertyAction PropertyName="Source">
			    <ei:ChangePropertyAction.Value>
				<ImageSource>
				    /images/noimage.png
				</ImageSource>
			    </ei:ChangePropertyAction.Value>
			</ei:ChangePropertyAction>
		</i:EventTrigger>
	</i:Interaction.Triggers>
</Image>

Первое маленькое замечание, но важное.

Если ваша картинка находиться в интернете, т.е ссылка начинается http\www, то будет задержка на, то что бы отправить запрос и получить ответ, и только после этого будет отображена стандартная картинка.

И второе замечание.

Если путь к картинке будет равна null или String.Empty, то событие вообще не сработает.

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

Код конвертора:

    public class ConvertNullImage : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {

            if (value == null || value.ToString() == "")
                return "bad";
            return value;
        }

        public object ConvertBack(object value, Type targetType, object parameter,
                                  CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

Добавить комментарий

Fill in your details below or click an icon to log in:

Логотип WordPress.com

You are commenting using your WordPress.com account. Log Out / Изменить )

Фотография Twitter

You are commenting using your Twitter account. Log Out / Изменить )

Фотография Facebook

You are commenting using your Facebook account. Log Out / Изменить )

Connecting to %s

Follow

Get every new post delivered to your Inbox.