I use MvxImageViewLoader in pretty simple situation.
On ViewDidLoad:
var pnlBackImage = new UIImageView(new RectangleF(0, 0, pnlBack.Frame.Width, pnlBack.Frame.Height));
Add(pnlBackImage);
pnlBackImageLoader = new MvxImageViewLoader(() => pnlBackImage);
...
set.Bind(pnlBackImageLoader).To(x => x.UserBackgroundUrl);
where UserBackgroundUrl is a common string property.
But on set.Apply() I see the following in my log and image is not loading:
2013-06-24 13:51:26.999 SPBTouch[446:21b03] MvxBind: Error: 2.78 Problem seen during binding execution for from UserBackgroundUrl to ImageUrl - problem TargetInvocationException: Exception has been thrown by the target of an invocation.
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x000d9] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Reflection/MonoMethod.cs:236
at System.Reflection.MonoProperty.SetValue (System.Object obj, System.Object value, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] index, System.Globalization.CultureInfo culture) [0x00064] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Reflection/MonoProperty.cs:353
at System.Reflection.PropertyInfo.SetValue (System.Object obj, System.Object value, System.Object[] index) [0x00000] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Reflection/PropertyInfo.cs:93
at Cirrious.MvvmCross.Binding.Bindings.Target.MvxPropertyInfoTargetBinding.SetValue (System.Object value) [0x00000] in <filename unknown>:0
at Cirrious.MvvmCross.Binding.Bindings.MvxFullBinding.UpdateTargetFromSource (Boolean isAvailable, System.Object value) [0x00000] in <filename unknown>:0
InnerException was NullReferenceException: Object reference not set to an instance of an object
at Cirrious.MvvmCross.Binding.Views.MvxBaseImageViewLoader`1[MonoTouch.UIKit.UIImage].set_ImageUrl (System.String value) [0x00000] in <filename unknown>:0
at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x000c0] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Reflection/MonoMethod.cs:228
I've even defined the image loader and even the image panel as the view fields, but there is still no luck. What can cause that problem?
Thank you.
The inner exception error you've listed is:
NullReferenceException: Object reference not set to an instance of an object at Cirrious.MvvmCross.Binding.Views.MvxBaseImageViewLoader`1[MonoTouch.UIKit.UIImage].set_ImageUrl (System.String value) [0x00000] in :0
I guess the thing that would cause a NullReferenceException in the set of:
public string ImageUrl
{
get { return _imageHelper.ImageUrl; }
set { _imageHelper.ImageUrl = value; }
}
is if _imageHelper is null
Looking in MvxBaseImageViewLoader.cs#L31 this can happen if this error message is displayed Unable to resolve the image helper - have you referenced and called EnsureLoaded on the DownloadCache plugin?
Is this error message displayed? If so, is the DownloadCache plugin (and it's dependent plugin File) loaded in your application?
If this doesn't help, try comparing your app so some of the apps in N+1. Successful use of the image views is covered in several of N+1 videos - http://mvvmcross.wordpress.com/ - e.g. N=2 or N=3
I come here when I had the same error (exception) mentioned in this question by following the tutorial on MvvmCross CollectionView example. I found that you get this error if you missed registering/installing your plugins. I resolved the error by installing the following plugins:
Install-Package MvvmCross.ITSparta.Plugin.DownloadCache
Install-Package MvvmCross.ITSparta.Plugin.File
When these plugins are installed, new files are created in your UI Project (iOS/Android) and these plugins are registered. Thus, you would not get this error.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With