2013-11-19 7 views
0

Я пытаюсь получить время выполнения изображений и на основе поиска изображения ImageFilePathName. Но есть вероятность, что изображение не существует, но исходный путь создается пустым изображением. Пожалуйста, кто-нибудь может предложить, как сделать проверку, если у источника есть допустимый файл или изображение. БлагодаряКак проверить, является ли исходный путь для bitmapimage действительным в C# mvvm

public object Convert(object value, Type targetType, object parameter, string culture) 
    { 
     StorageFolder installFolder = Windows.ApplicationModel.Package.Current.InstalledLocation; 
     string installFolderPath = installFolder.Path; 
     const string LOGO_KIND_SMALL = "Small"; 

     ImageSource source; 
     string logoImageFilePathName; 

       try 
     { 
      int logoId = Int32.Parse((string)value); 
      logoImageFilePathName = string.Format("{0}\\{1}\\Logos\\Chan\\{2}\\{3:0000}.png", installFolderPath, "Assets", LOGO_KIND_SMALL, logoId); 

      try 
      { 
       source = new BitmapImage(new Uri(logoImageFilePathName)); 

       return source; 
      } 
      catch(Exception ex) 
      { 
       Logger.LogError(ex.Message); 
      } 


     } 
     catch (Exception ex) 
     { 
      Logger.LogError(ex.Message); 
     } 

     logoImageFilePathName = string.Format("{0}\\{1}\\Logos\\Channels\\{2}\\{3}.png", installFolderPath, "Assets", LOGO_KIND_SMALL, "0000"); 
     source = new BitmapImage(new Uri(logoImageFilePathName)); 
     return source; 


    } 

    public object ConvertBack(object value, Type targetType, object parameter, string culture) 
    { 
     throw new NotSupportedException(); 
    } 
+0

Разве это сработало для вас? –

ответ

2

, чтобы проверить и посмотреть, если путь является действительным вы можете использовать File.Exists(path);. , но только для знания, если вы хотите, чтобы увидеть, если строка даже путь или просто текст Uri.IsWellFormedUriString(parameter, UriKind.Absolute)

так что вы будете использовать:

public object Convert(object value, Type targetType, object parameter, string culture) 
{ 
    string installFolderPath = System.Windows.ApplicationModel.Package.Current.InstalledLocation.Path; 
    const string LOGO_KIND_SMALL = "Small"; 

    var logoImageFilePathName = string.Format("{0}\\Assets\\Logos\\Chan\\{1}\\{2:0000}.png" 
     , installFolderPath 
     , LOGO_KIND_SMALL 
     , Int32.Parse((string)value)); 

    // Check for file 
    return (File.Exists(logoImageFilePathName)) 
       ? new BitmapImage(new Uri(logoImageFilePathName)) 
       : null; 
} 

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

Только примечание: При использовании методов, как string.Format() если у вас есть жестко закодированный фрагмент пути, вы должны просто поместить его в строку, как указано выше.

+0

Привет Trae, я попытался найти файл File.Exists (путь), но его нет в Windows8 System.IO. и я хочу просто проверить путь – user2817553

+0

Я не уверен, о чем вы говорите .. Я использую это ежедневно. http://msdn.microsoft.com/en-us/library/system.io.file.exists(v=vs.110).aspx –