如果我在 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 });
}
}
}
关键部分是获取文档路径的方式。我正在通过在我尝试加载的照片名称上使用"获取信息"来测试图像路径。该文件路径不起作用。