Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MvxImageViewLoader binding not working

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.

like image 862
Agat Avatar asked Jun 30 '26 22:06

Agat


2 Answers

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

like image 58
Stuart Avatar answered Jul 07 '26 02:07

Stuart


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.

like image 37
Has AlTaiar Avatar answered Jul 07 '26 02:07

Has AlTaiar



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!