2012-12-12 2 views
1

Итак, я создал приложение для Windows Store (например, приложение Windows 8/ранее называемое Metro App), и я импортирую zip-архив, содержащий изображение (хорошо работает импорт).Показать изображение из Uri in Winrt и MVVM Pattern

Когда zip exctracted (в его собственной папке), я добавляю объект, который представляет папку в ObservableCollection.

Этот ObservableCollection используется как DataContext для GridView, имя папки отображается правильно, но первое изображение папки не ... < = так что моя проблема.

Я создаю мой объект, используя статический метод после того, как экстракт завершаются

public class ZipFolder 
    { 

     public string Title 
     { 
      get { return _title; } 
      set { _title = value;} 
     } 
     public int CurrentPage 
     { 
      get { return _currentPage; } 
      set { _currentPage = value;} 
     } 
     public Uri PathCover 
     { 
      get { return _pathCover; } 
      set { _pathCover = value;} 
     } 

     private string _title ; 
     private int _currentPage; 
     private Uri _pathCover; 

    } 
public static async Task<ZipFolderObject> CreateComic(StorageFolder folder) 
{ 
    ZipFolderObject o = new ZipFolderObject(); 
    o.Title = folder.DisplayName; 

    IReadOnlyList<StorageFile> asyncOperation = await folder.GetFilesAsync(); 
    StorageFile cover = asyncOperation[0]; 

    o.PathCover = new Uri("ms-appdata:///local/" + folder.Name + "/" + cover.Name); 

    return o; 
} 

И связывание выглядеть следующим образом:

<DataTemplate x:Key="zipFolderItemTemplate"> 
     <StackPanel Width="165" Height="250"> 
      <Grid Height="215"> 
       <Border Background="Bisque" Width="{Binding ActualWidth, ElementName=image}"> 
        <!--<Image x:Name="image" VerticalAlignment="Top" HorizontalAlignment="Center" Source="{Binding Cover}" />--> 
        <Image Stretch="Uniform" x:Name="image" VerticalAlignment="Top" HorizontalAlignment="Center"> 
         <Image.Source> 
          <BitmapImage UriSource="{Binding PathCover}" /> 
         </Image.Source> 
        </Image> 
       </Border> 
       <Polygon Points="0,0 0,50, 50,0" Stroke="Red" FillRed" RenderTransformOrigin="0.5,0.5" Visibility="{Binding CurrentPage, Converter={StaticResource BookmarkVisibilityConverter}}" Width="{Binding ActualWidth, ElementName=image}" /> 
      </Grid> 
      <TextBlock HorizontalAlignment="Center" TextWrapping="Wrap" VerticalAlignment="Top" Text="{Binding Title}" Margin="0,10,0,0" Foreground="Black" /> 
     </StackPanel> 
    </DataTemplate> 

Так что, если кто-то есть намек к моей проблеме это будет здорово!

+0

Я продолжаю свое исследование и я связываю непосредственно к источнику изображения в свойство ZipFolder объекта типа BitmapImage. Он работает, но я думаю, что это может быть слишком много, и я предпочитаю первый путь ... – fantastik78

ответ

1

Вы можете использовать только каталог/filename.ext в источнике изображения, если извлеченные изображения, подкаталог. Concat два значения и установите PathCover недвижимости:

folder.Name + "/" + cover.Name 

и редактировать Templete данных в этом разделе:

<Image Stretch="Uniform" x:Name="image" VerticalAlignment="Top" HorizontalAlignment="Center" Source={Binding PathCover}/> 

С уважением.

1

Просто используйте String вместо Uri.

в MainPage.xaml

<Image Source="{Binding VehicleIcon}" Height="54" Width="54"/> 

в viewmodel.cs файл

public String VehicleIcon {get;set; } 
... 
VehicleIcon = "ms-appx:///Assets/logo.png"; 
Смежные вопросы