【问题标题】:Show url image if it exist in database. If url empty show another picture如果它存在于数据库中,则显示 url 图像。如果 url 为空,则显示另一张图片
【发布时间】:2019-10-03 07:52:49
【问题描述】:

我在列表视图中有两个图像。但是,我从数据库中获取的一张图像,但并非列表中的所有项目在数据库中都有一张图片。

我尝试将 Visible 语句放在 XAML 中,然后在我的模型中添加一些逻辑,但没有成功。见代码:

我的两张图片:

 <u:CircleLabelSmall  IsVisible="{Binding hideImage}"                                                        Text="{Binding PersonName, Converter={StaticResource NameConverter}}"
BadgeColor="{Binding PersonName, Converter={StaticResource NameColorConverter}}" />

<d:CircleImage Source="{Binding adImage}"  IsVisible="{Binding showImage}">                                                      
</d:CircleImage>

此字符串从数据库中获取图像:

public string adImage { get; set; }

这是我尝试让它在我的模型中工作的尝试:

public bool isImageUrlNull { get { return!string.IsNullOrEmpty(adImage); } }
public string adImage { get; set; }

感谢任何可用的提示:) 谢谢

【问题讨论】:

  • 你解决了吗?
  • 不,我更新了我的 XAML,所以我认为现在很好。我从下面的答案中添加了代码,但它现在显示了两张图片。 @AndroDevil
  • 为什么不把两张图片放在网格里呢?一个高于另一个
  • 没关系。无论如何,对于列表视图中的每一行,它们都不应该同时可见。 @AndroDevil

标签: c# visual-studio xamarin xamarin.forms


【解决方案1】:

最简单的方法是使用转换器并根据条件返回Source

public class ImageSourceConvertor: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {

      if(string.IsNullOrWhiteSpace(value.ToString())){

           return "DefaultImage";
       }
      return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

查看 Microsoft 文档中的以下帖子以了解转换器的工作原理:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/data-binding/converters

祝你好运

如果您有任何疑问,请回复

【讨论】:

  • 谢谢,我创建了一个新文件并添加了 ImageSourceConvertor 转换器。我不确定如何让我的 XAML 运行,因为我没有从其中一张图片绑定源。根据我的理解,我必须使用 Isvisible 吗? @FreakyAli
  • 我不确定你所说的`我没有绑定其中一张图片的来源`你能详细说明一下吗我可以看到你正在使用Binding作为你的@ 987654325@,我是不是误会了什么?
  • 在我的 xaml 中,我有 &lt;u:CircleLabelSmall 这真的不是图像。它只是被设计成看起来像一个图像,所以上面没有Source=""。所以我必须将 IsVisible 与转换器一起使用? @FreakyAli
  • 是的,你也可以这样做 :) 抱歉,我之前没明白
  • 我在我的问题中更新了我的 XAML。这适用于您编写的转换器代码吗? @FreakyAli
【解决方案2】:

使用“FFImageLoading”牛轧糖包直接在您的 xml 中使用默认占位符处理任何图像 url

在 xaml 中添加命名空间

xmlns:forms="clr-namespace:FFImageLoading.Forms;assembly=FFImageLoading.Forms"

<forms:CachedImage
      Aspect="AspectFill"
      LoadingPlaceholder="placeholderimageName"
      Source="{Binding YourImage}" />

更多详情请查看link

【讨论】:

  • 这不是我要求的。我希望只有当数据库图像为空时才能看到第 1 张图片... @Dharam
猜你喜欢
  • 2018-04-29
  • 2015-03-16
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多