我在ViewModel上有这些属性的代码:
private string _fullName;
public string FullName
{
get => _fullName;
set
{
_fullName = value;
OnPropertyChanged(nameof(FullName));
}
}
private string _imageUrl;
public string ImageUrl
{
get => _imageUrl;
set
{
_imageUrl = value;
OnPropertyChanged(nameof(ImageUrl));
}
}
// Some other properties
然后在XAML:
上有这段代码<Grid Margin="25">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Frame Grid.Column="0" CornerRadius="100" HeightRequest="86" WidthRequest="86" HorizontalOptions="Center" Padding="0" IsClippedToBounds="True">
<Image Source="{Binding ImageUrl}" HorizontalOptions="Center" VerticalOptions="Center" Aspect="Fill"/>
</Frame>
<StackLayout Grid.Column="1" Orientation="Vertical" VerticalOptions="Center" Margin="15">
<Label Text="{Binding FullName}" FontSize="Large" FontAttributes="Bold"/>
<Label Text="{Binding Email}" FontSize="Small" />
</StackLayout>
</Grid>
每个属性都被加载,除了图像。我担心这是对图像控件的一些限制,但是当我只使用图像控件而不被Frame元素包裹时,图像加载得很好。
<!--This code works just fine-->
<Image Source="{Binding ImageUrl}" HorizontalOptions="Center" VerticalOptions="Center" Aspect="Fill"/>
在处理来自web的图像时,Frame控件是否有限制?当我从本地资源/图像文件夹加载图像时,这两种方法都工作得很好。我也试着在模拟器的浏览器上打开图像,它工作得很好。
我做错了什么?
我测试了您提供的代码,发现如下:
当为:
<Frame Grid.Column="0" CornerRadius="100" HeightRequest="86" WidthRequest="86" HorizontalOptions="Center" Padding="0" IsClippedToBounds="True">
<Image Source="{Binding ImageUrl}"
HorizontalOptions="Center" VerticalOptions="Center" Aspect="Fill"/>
</Frame>
当你说的时候,图像会丢失。
但是,如果我删除Image的HorizontalOptions
和VerticalOptions
,图像将显示良好。
<Frame Grid.Column="0" CornerRadius="100" HeightRequest="86" WidthRequest="86" HorizontalOptions="Center" Padding="0" IsClippedToBounds="True">
<Image Source="{Binding ImageUrl}"
Aspect="Fill"/>
</Frame>
效果是这样的。