Как проверенный файл существует в Silverlight - PullRequest
0 голосов
/ 07 июня 2011

Мне нужен конвертер, если изображение не существует или возвращается ноль new BitmapImage(new Uri("http://upload.wikimedia.org/wikipedia/commons/1/1c/No-Symbol.png")) иначе, если файл существует, вернуть файл.

pathImage - пример http://localhost:65051/ClientBin/images/sm_butter_cake.jpg

File.Exists - всегда возвращает false. Почему?

public class ConvertNullImage : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            try
            {
                string pathImage = Application.Current.Host.Source.AbsoluteUri.Substring(0, 
                    Application.Current.Host.Source.AbsoluteUri.LastIndexOf("/"));
                if (File.Exists(pathImage + value.ToString()))
                {
                    var image = new BitmapImage(new Uri(value.ToString(), UriKind.Relative));
                    return image;
                }
                else
                {
                    throw new Exception("Not file");
                }

            }
            catch { return new BitmapImage(new Uri("http://upload.wikimedia.org/wikipedia/commons/1/1c/No-Symbol.png")); }
        }

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

Ответы [ 2 ]

0 голосов
/ 09 июня 2011

Нужно использовать событие 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>

источник, но этот русский блог

0 голосов
/ 07 июня 2011

File.Exists не будет работать через HTTP, попробуйте использовать решение здесь

http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/thread/95851d08-452b-4f32-b03a-206dec5c8095/

...