// expects the target object as the first parameter, and the resource key as the second public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (values.Length < 2) { return(null); } var element = values[0] as FrameworkElement; var resourceKey = values[1]; if (element == null || resourceKey == null) { return(null); } if (StringFormat != null) { resourceKey = string.Format(StringFormat, resourceKey); } if (ResourceKeyConverter != null) { resourceKey = ResourceKeyConverter.Convert(resourceKey, targetType, ConverterParameter, culture); } if (resourceKey == null) { return(null); } var resource = element.TryFindResource(resourceKey); if (resource == null) { Trace.TraceWarning("Resource not found: {0}", resourceKey); } return(resource); }
// expects the target object as the first parameter, and the resource key as the second public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (values.Length < 2) { return(null); } var element = values[0] as FrameworkElement; var resourceKey = values[1]; if (ResourceKeyConverter != null) { resourceKey = ResourceKeyConverter.Convert(resourceKey, targetType, ConverterParameter, culture); } else if (StringFormat != null && resourceKey is string) { resourceKey = string.Format(StringFormat, resourceKey); } var resource = element.TryFindResource(resourceKey); return(resource); }
// expects the target object as the first parameter, and the resource key as the second public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (values.Length < 2) { return(null); } var element = values[0] as FrameworkElement; var resourceKey = values[1]; if (element == null || resourceKey == null) { return(null); } if (ResourceKeyFormat != null) { resourceKey = string.Format(ResourceKeyFormat, resourceKey); } if (ResourceKeyConverter != null) { resourceKey = ResourceKeyConverter.Convert(resourceKey, targetType, ConverterParameter, culture); } if (resourceKey == null) { return(null); } var resource = element.TryFindResource(resourceKey); if (resource != null) { if (CropRect == null) { return(resource); } else if (resource is BitmapSource) { BitmapSource bitmap = resource as BitmapSource; var result = new CroppedBitmap(bitmap, CropRect); result.Freeze(); return(result); } } string fileName = null; resourceKey = values[1]; if (StringFormat != null) { fileName = string.Format(StringFormat, resourceKey); } if (ResourceKeyConverter != null) { fileName = ResourceKeyConverter.Convert(fileName, targetType, ConverterParameter, culture).ToString(); } if (fileName != null) { fileName = string.Format("pack://siteoforigin:,,,/{0}", fileName); try { object imageObj = (new ImageSourceConverter()).ConvertFromString(fileName); var image = imageObj as ImageSource; if (image != null) { if (CropRect == null) { return(image); } else if (image is BitmapSource) { BitmapSource bitmap = image as BitmapSource; var result = new CroppedBitmap(bitmap, CropRect); result.Freeze(); return(result); } } } catch (NullReferenceException) { } catch (NotSupportedException) { } catch (ArgumentException) { Trace.TraceWarning("Image not in expected size: {0}", fileName); } } Trace.TraceWarning("Resource not found: {0} or {1}\n", resourceKey, fileName); return(null); }