属性" ImagePreview无法在类型" ImageFileInfo"

时间:2018-06-06 13:24:34

标签: c# xaml visual-studio-2017

我最近自学了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>

p.s还有一件事,为什么我不能使用x:Key on&lt;&lt; VisualState&gt;&gt;? 它也犯了错误

1 个答案:

答案 0 :(得分:0)

我只是在Github上观看样本。 ImageFileInfo类中没有“ImagePreview”属性。

我认为此属性是文件图像源上的getter。 因此,此属性应与方法的结果类型相同:

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();