Свойство "ImagePreview нельзя найти по типу" ImageFileInfo " - PullRequest
0 голосов
/ 06 июня 2018

Недавно я самостоятельно изучил Visual Studio и C #, поэтому я последовал этому примеру

https://docs.microsoft.com/en-us/windows/uwp/design/basics/xaml-basics-adaptive-layout

и обнаружил ошибку в заголовке

Вот источниккод (я думаю, что он точно такой же, как в ссылке)

<Page x:Name="page"
      x:Class="PhotoLab.MainPage"
      <!-- skip -->
    <Page.Resources>
        <DataTemplate x:Key="ImageGridView_DefaultItemTemplate">
        <!-- skip -->
        </DataTemplate>
        <DataTemplate x:Key="ImageGridView_MobileItemTemplate"
                      x:DataType="local:ImageFileInfo">
                <!-- skip -->
                <Image x:Name="ItemImage"
                       Source="{x:Bind ImagePreview}"
                       Stretch="UniformToFill">
                <!-- skip -->
        </DataTemplate>
        <!-- skip -->
    </Page.Resources>
    <RelativePanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <!-- skip -->
        <VisualStateManager.VisualStateGroups>
           <VisualStateGroup>
                <VisualState x:Key="LargeWindow">
                    <VisualState.StateTriggers>
                        <AdaptiveTrigger MinWindowWidth="{StaticResource LargeWindowSnapPoint}"/>
                    <!-- skip -->
                    </VisualState.StateTriggers>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
   </RelativePanel>
</Page>

ps Еще одна вещь, почему я не могу использовать x: Key в << VisualState >>?Это тоже делает ошибку

1 Ответ

0 голосов
/ 08 июня 2018

Я просто смотрю образец на Github.В классе ImageFileInfo отсутствует свойство 'ImagePreview'.

Я думаю, что это свойство является геттером для источника изображения файла.Так что это свойство должно быть того же типа, что и результат метода:

public async Task<BitmapImage> GetImageSourceAsync()

Поэтому я предлагаю вам:

  • , чтобы добавить «традиционное» свойство, ImagePreview вот так:

    private BitmapImage _imagePreview;
    
    // ...
    
    public BitmapImage ImagePreview
    {
        get => _imagePreview;
        private set => SetProperty(ref _imagePreview, value);
    }
    
  • , затем вам необходимо реализовать асинхронный метод , чтобы загрузить это изображение в свойство ImagePreview.Этот метод существует, это GetImageSourceAsync ().Итак, где-то, что вы хотите в своем коде, назовите это:

    fileImage.ImagePreview = await fileImage.GetImageSourceAsync();
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...