【问题标题】:Cannot load image in viewcell xamarin form无法以 viewcell xamarin 形式加载图像
【发布时间】:2017-06-27 13:42:47
【问题描述】:

这是我的 xaml 绑定:

<?xml version="1.0" encoding="utf-8" ?>
<ViewCell xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:dataTemplateSelector="clr-namespace:VaultixForm;assembly=VaultixForm"
         x:Class="VaultixForm.CustomCells.OutgoingViewCell">

<Grid ColumnSpacing="2" Padding="5">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="40"></ColumnDefinition>
        <ColumnDefinition Width="*"></ColumnDefinition>
        <ColumnDefinition Width="0"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
    </Grid.RowDefinitions>

    <Frame Grid.Row="0" OutlineColor="Transparent" HasShadow="False" Grid.Column="1" BackgroundColor="#F5F5F5">
        <Image Aspect="AspectFill" x:Name="ImageView" Source="{Binding ImageURL}"/>

        <Label x:Name="TextView" TextColor="Black" Text="{Binding Text}" />
    </Frame>
    <Label Grid.Row="1" FontSize="Micro" Grid.Column="1" HorizontalTextAlignment="End"  Text="{Binding MessagDateTime, StringFormat='{0:MM/dd/yyyy hh:mm tt}'}" TextColor="Gray"></Label>

</Grid>

我的视图模型:

 private string text;

    public string Text
    {
        get { return text; }
        set { text = value; RaisePropertyChanged(); }
    }

    private string imageurl;

    public string ImageURL
    {
        get { return imageurl; }
        set { imageurl = value; RaisePropertyChanged(); }
    }

    private DateTime messageDateTime;

    public DateTime MessagDateTime
    {
        get { return messageDateTime; }
        set { messageDateTime = value; RaisePropertyChanged(); }
    }

    private bool isIncoming;

    public bool IsIncoming
    {
        get { return isIncoming; }
        set { isIncoming = value;  RaisePropertyChanged();}
    }

    public bool HasAttachement => !string.IsNullOrEmpty(attachementUrl);

    private string attachementUrl;

    public string AttachementUrl    
    {
        get { return attachementUrl; }
        set { attachementUrl = value; RaisePropertyChanged();}
    }


}

}

添加数据是这样的

Messages.Add(new MessageViewModel { ImageURL = "https://beebom-redkapmedia.netdna-ssl.com/wp-content/uploads/2016/01/Reverse-Image-Search-Engines-Apps-And-Its-Uses-2016.jpg", IsIncoming = false, MessagDateTime = DateTime.Now.AddMinutes(-25) });

我尝试对 URL 进行编码,甚至使用本地图像。图像只是没有显示在 ViewCell 列表中。甚至没有错误。我做错了吗?

【问题讨论】:

  • 除了图片加载是否正确?
  • 需要您的页面的 xaml,其中定义了 viewcell 的列表并编码您如何在页面上设置绑定
  • VisualStudio 的Output 窗口在构建/启动时出现任何错误?即那里显示的任何 BindingErrors ?
  • 除图像外一切正常。

标签: c# xamarin.forms


【解决方案1】:

您绑定到ImageUrl,但您的属性名为ImageURL。请记住,WPF(一般而言)区分大小写

XAML 通常是区分大小写的。为了解析支持类型,WPF XAML 按照与 CLR 区分大小写相同的规则区分大小写。对象元素、属性元素和属性名称在按名称与程序集中的基础类型或类型的成员进行比较时,都必须使用敏感大小写来指定。 XAML 语言关键字和原语也区分大小写。值并不总是区分大小写。值的大小写敏感性将取决于与采用该值的属性或属性值类型相关联的类型转换器行为。例如,采用 Boolean 类型的属性可以采用 true 或 True 作为等效值,但这只是因为将字符串转换为 Boolean 的本机 WPF XAML 解析器类型转换已经允许将它们作为等效值。

来源:https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/xaml-overview-wpf#case_and_whitespace_in_xaml

【讨论】:

  • 注明。是我的错字。图像仍然无法加载。
  • @nnn 你确定它是这样工作的(只是引用来自互联网的 URL)?我认为您可能需要先下载图像,然后绑定到设备上的图像路径。
  • @DennisSchröer 这应该可以工作,如 here 所述
  • 我确实尝试了另一个 URL,它可以工作。 URL:lorempixel.com/200/200 但任何带有 jpg 或 png 扩展名的东西都没有。如何下载缓存中的图像并将其显示给用户?
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多