Xamarin 窗体集合视图图像源未绑定到文件路径.(Xamarin Forms Pre-release v 4.0.0



如果我在 XAML 中有一个简单的图像:

<Image
    Source="{Binding ImageUrl}"
    Grid.Column="0"
    HorizontalOptions="EndAndExpand"
    VerticalOptions="CenterAndExpand" />

文件路径正确绑定。但是,如果我将 Image 元素嵌套在 CollectionView 中,则图像不再绑定。

<CollectionView
    x:Name="CV"
    ItemsSource="{Binding ThumbnailPhotos}"
    VerticalOptions="Center"
    HorizontalOptions="Center">
    <CollectionView.ItemsLayout>
        <GridItemsLayout
            Orientation="Vertical"
            Span="2" />
    </CollectionView.ItemsLayout>
    <CollectionView.ItemTemplate>
        <DataTemplate>
            <Frame
                BorderColor="LightGray"
                CornerRadius="3"
                HasShadow="False">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition
                            Width="Auto" />
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition
                            Height="Auto" />
                    </Grid.RowDefinitions>
                    <Image
                        Source="{Binding ImageUrl}"
                        Grid.Column="0"
                        HorizontalOptions="EndAndExpand"
                        VerticalOptions="CenterAndExpand" />
                </Grid>
            </Frame>
        </DataTemplate>
    </CollectionView.ItemTemplate>
</CollectionView>

出于测试目的,我的视图模型中的可观察集合如下所示:

ThumbnailPhotos = new ObservableCollection<Thumbnail>
{
    new Thumbnail(){ ImageUrl = "/Users/<myUser>/Library/Developer/CoreSimulator/Devices/68BF4E8E-DF6D-4459-B6AD-DCEDB270916B/data/Containers/Data/Application/0C205001-6DFD-4846-9E6D-415F772FCB58/Documents/Defect Photos/IMG_20190102_165617/IMG_20190102_165617.jpg" } ,
    new Thumbnail(){ ImageUrl = "/Users/<myUser>/Library/Developer/CoreSimulator/Devices/68BF4E8E-DF6D-4459-B6AD-DCEDB270916B/data/Containers/Data/Application/0C205001-6DFD-4846-9E6D-415F772FCB58/Documents/Defect Photos/IMG_20190102_165617/IMG_20190102_165617.jpg" } ,
    new Thumbnail(){ ImageUrl = "/Users/<myUser>/Library/Developer/CoreSimulator/Devices/68BF4E8E-DF6D-4459-B6AD-DCEDB270916B/data/Containers/Data/Application/0C205001-6DFD-4846-9E6D-415F772FCB58/Documents/Defect Photos/IMG_20190102_165617/IMG_20190102_165617.jpg" } ,
    new Thumbnail(){ ImageUrl = "/Users/<myUser>/Library/Developer/CoreSimulator/Devices/68BF4E8E-DF6D-4459-B6AD-DCEDB270916B/data/Containers/Data/Application/0C205001-6DFD-4846-9E6D-415F772FCB58/Documents/Defect Photos/IMG_20190102_165617/IMG_20190102_165617.jpg" } ,
};

错误似乎是构造文件路径的方式。在iOS上,我最终使用了这种方法:

var docsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var photosPath = Path.Combine(docsPath, "DefectPhotos/");
        if(Directory.Exists(photosPath))
        {
            string[] photoNames = GetFileNames(photosPath, "*.jpg");
            foreach (var photoName in photoNames)
            {
                if (photoName.Contains(_item.DefectId))
                {
                    thumbnailPhotos.Add(new Thumbnail() { ImageUrl = photosPath + photoName });
                }
            }
        }

关键部分是获取文档路径的方式。我正在通过在我尝试加载的照片名称上使用"获取信息"来测试图像路径。该文件路径不起作用。

最新更新