如何判断Xamarin.Forms.Image的Source是否未包含URI或Stream?
检查Xamarin.Forms.Image是否未包含URI或Stream源
要判断一个Image控件的Source是否既不是URI来源也不是流来源,我们可以利用Xamarin.Forms中ImageSource的类型特性来实现——因为ImageSource是抽象类,它的具体实现包括UriImageSource(对应URI源)、StreamImageSource(对应流源)、FileImageSource等,我们只需要判断Source的类型或者是否为null即可。
具体实现方法
你可以写一个工具方法来做这个检查,逻辑很清晰:
- 先判断
Image.Source是否为null——如果是,说明完全没有设置任何源; - 如果
Source不为null,再判断它既不是UriImageSource也不是StreamImageSource类型。
代码示例如下:
public bool HasNoUriOrStreamSource(Image image) { // 情况1:完全没有设置源 if (image.Source == null) return true; // 情况2:源存在,但既不是URI也不是Stream类型 return !(image.Source is UriImageSource) && !(image.Source is StreamImageSource); }
对应你的场景测试
把你的三个Image传入这个方法:
- 第一个URI源的图像:
Source是UriImageSource类型,方法返回false; - 第二个图库流源的图像:
Source是StreamImageSource类型,方法返回false; - 第三个无任何源的图像:
Source为null,方法返回true。
额外说明
如果你的场景中还需要排除其他类型的ImageSource(比如本地文件源FileImageSource),这个方法也能直接覆盖——只要它不是URI或Stream类型,都会返回true,完全符合你“检查是否未包含URI或Stream”的需求。
内容的提问来源于stack exchange,提问作者Nanji Mange
相关产品推荐
相关产品推荐

