我有一个项目,在其资源文件夹中包含一堆图像。 但是现在我想通过下载图像来使用图像,然后再使用它。但是要做到这一点,我必须将转换器应用于所有图像。 是否可以将转换器隐式应用于所有图像。或者其他适合的方法?
public class ImageFileToImageSourceConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (!(value is string name)) return null;
return ImageSource.FromFile(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), name));
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
答案 0 :(得分:0)
我不这样认为。
您可以做的是创建您自己的控件继承,始终在其中应用转换器,并在该控件上创建一个可绑定属性,该属性为常规属性提供营养。
答案 1 :(得分:0)
是的,您实际上可以。在App.xaml中设置样式(或在代码中取决于样式的位置,或其他ResourceDictionary),将样式设置为所有要将转换器用作Source的图像(我假设这就是您想要做的事)。
答案 2 :(得分:0)
我最终会这样使用
public class StorageImage : Image
{
public static string FolderName = "assest";
public new object Source
{
get
{
return (ImageSource)base.Source;
}
set
{
base.Source = (ImageSource)ConvertFromInvariantString(value as string);
}
}
public static object ConvertFromInvariantString(string value)
{
try
{
if (string.IsNullOrEmpty(value)) return null;
return ImageSource.FromFile(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), FolderName, value));
}
catch (Exception ee)
{
return null;
}
}
}