For your consideration: SolTech Xamarin Forms Toolkit

AndyHopperAndyHopper USMember ✭✭
edited October 2014 in Xamarin.Forms

We've needed to extend the XF framework for our projects, and we'd like to share our work with the XF community. To that end, we've created an open-source NuGet package (SolTech Xamarin Forms Toolkit) that exposes the following (at least, as of v1):

  • Data-bound Picker
  • Entry control with maximum input length
  • "Toggle" selector (Left/Right)
  • Image Button (clickable image)
  • Localization framework (+ markup extension) using embedded resource (.RESX) files

The code is hosted at GitHub at:
https://github.com/soltechinc/soltechxf

Feedback is appreciated!

-Andy Hopper

Technical Architect

SolTech, Inc.

http://www.soltech.net

Posts

  • SteveMacdonaldSteveMacdonald CAUniversity, Certified XTC Partners ✭✭

    Hi Andy - I cannot get the BoundPicker to work. Here is the exception I get:

    06-23 18:38:07.156 I/mono-stdout( 5729): Sequence contains no elements
    06-23 18:38:07.160 D/Mono    ( 5729): Assembly Ref addref XFSF[0xb89d1a20] -> SolTech.Xamarin.Forms[0xb89c63f8]: 3
    06-23 18:38:07.160 D/Mono    ( 5729): Assembly Ref addref SolTech.Xamarin.Forms[0xb89c63f8] -> System.Linq.Expressions[0xb89d5fb0]: 3
    06-23 18:38:07.160 D/Mono    ( 5729): Assembly Ref addref SolTech.Xamarin.Forms[0xb89c63f8] -> System.Reflection[0xb89d5218]: 5
    06-23 18:38:07.164 D/Mono    ( 5729): DllImport attempting to load: '/system/lib/liblog.so'.
    06-23 18:38:07.164 D/Mono    ( 5729): DllImport loaded library '/system/lib/liblog.so'.
    06-23 18:38:07.164 D/Mono    ( 5729): DllImport searching in: '/system/lib/liblog.so' ('/system/lib/liblog.so').
    06-23 18:38:07.164 D/Mono    ( 5729): Searching for '__android_log_print'.
    06-23 18:38:07.164 D/Mono    ( 5729): Probing '__android_log_print'.
    06-23 18:38:07.164 D/Mono    ( 5729): Found as '__android_log_print'.
    06-23 18:38:07.164 I/MonoDroid( 5729): UNHANDLED EXCEPTION:
    06-23 18:38:07.180 I/MonoDroid( 5729): System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: An exception was thrown by the type initializer for SolTech.Forms.BoundPicker ---> System.MissingMethodException: Method 'BindableProperty.Create' not found.
    06-23 18:38:07.184 I/MonoDroid( 5729):   --- End of inner exception stack trace ---
    06-23 18:38:07.184 I/MonoDroid( 5729):   at XFSF.Views.ContactEditView..ctor (IListViewModel listViewModel, XFSF.Model.Contact entity) [0x00048] in C:\Users\Steve\Documents\Source\XFSF\XFSF\XFSF\Generated\Views\ContactEditView__gen.cs:31 
    06-23 18:38:07.184 I/MonoDroid( 5729):   at XFSF.ViewModels.ContactListViewModel.set_SelectedContact (XFSF.Model.Contact value) [0x00012] in C:\Users\Steve\Documents\Source\XFSF\XFSF\XFSF\Generated\ViewModels\ContactListViewModel__gen.cs:71 
    06-23 18:38:07.184 I/MonoDroid( 5729):   at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
    06-23 18:38:07.184 I/MonoDroid( 5729):   at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00044] in <filename unknown>:0 
    06-23 18:38:07.184 I/MonoDroid( 5729):   --- End of inner exception stack trace ---
    06-23 18:38:07.184 I/MonoDroid( 5729): at System.Reflection.MonoMethod.Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) <IL 0x00062, 0x0021f>
    06-23 18:38:07.184 I/MonoDroid( 5729): at System.Reflection.MethodBase.Invoke (object,object[]) <IL 0x00006, 0x00059>
    06-23 18:38:07.184 I/MonoDroid( 5729): at Xamarin.Forms.BindingExpression.ApplyCore (object,Xamarin.Forms.BindableObject,Xamarin.Forms.BindableProperty,bool) <IL 0x0028c, 0x00c17>
    06-23 18:38:07.184 I/MonoDroid( 5729): at Xamarin.Forms.BindingExpression.Apply (bool) <IL 0x00041, 0x000fb>
    06-23 18:38:07.184 I/MonoDroid( 5729): at Xamarin.Forms.Binding.Apply (bool) <IL 0x00027, 0x000e7>
    06-23 18:38:07.184 I/MonoDroid( 5729): at Xamarin.Forms.BindableObject.SetValueActual (Xamarin.Forms.BindableProperty,Xamarin.Forms.BindableObject/BindablePropertyContext,object,bool,Xamarin.Forms.BindableObject/SetValueFlags,bool) <IL 0x000ec, 0x0040b>
    06-23 18:38:07.184 I/MonoDroid( 5729): at Xamarin.Forms.BindableObject.SetValueCore (Xamarin.Forms.BindableProperty,object,Xamarin.Forms.BindableObject/SetValueFlags,Xamarin.Forms.BindableObject/SetValuePrivateFlags) <IL 0x0023e, 0x0099f>
    06-23 18:38:07.184 I/MonoDroid( 5729): at Xamarin.Forms.BindableObject.SetValueCore (Xamarin.Forms.BindableProperty,object,Xamarin.Forms.BindableObject/SetValueFlags) <IL 0x00005, 0x0004f>
    06-23 18:38:07.184 I/MonoDroid( 5729): at Xamarin.Forms.ListView.NotifyRowTapped (int,int) <IL 0x00051, 0x001e3>
    06-23 18:38:07.184 I/MonoDroid( 5729): at Xamarin.Forms.ListView.NotifyRowTapped (int) <IL 0x00025, 0x000cf>
    06-23 18:38:07.184 I/MonoDroid( 5729): at Xamarin.Forms.Platform.Android.ListViewAdapter.HandleItemClick (Android.Widget.AdapterView,Android.Views.View,int,long) <IL 0x00029, 0x000c3>
    06-23 18:38:07.184 I/MonoDroid( 5729): at Xamarin.Forms.Platform.Android.CellAdapter.OnItemClick (Android.Widget.AdapterView,Android.Views.View,int,long) <IL 0x0002c, 0x00133>
    06-23 18:38:07.184 I/MonoDroid( 5729): at Android.Widget.AdapterView/IOnItemClickListenerInvoker.n_OnItemClick_Landroid_widget_AdapterView_Landroid_view_View_IJ (intptr,intptr,intptr,intptr,int,long) [0x00019] in /Users/builder/data/lanes/monodroid-mavericks-monodroid-5.1-series/d419c934/source/monodroid/src/Mono.Android/platforms/android-21/src/generated/Android.Widget.AdapterView.cs:211
    06-23 18:38:07.184 I/MonoDroid( 5729): at (wrapper dynamic-method) object.ac0878b1-543d-460a-a26c-977479ed61ff (intptr,intptr,intptr,intptr,int,long) <IL 0x00029, 0x0005b>
    06-23 18:38:07.196 D/AndroidRuntime( 5729): Shutting down VM
    06-23 18:38:07.204 W/dalvikvm( 5729): threadid=1: thread exiting with uncaught exception (group=0xa4d8db20)
    An unhandled exception occured.
    
  • AndyHopperAndyHopper USMember ✭✭

    Hi, Steve! What version of Xamarin Forms is this running under? It sounds like a method I had compiled my code against is no longer present and/or public in whatever version you have...

  • SteveMacdonaldSteveMacdonald CAUniversity, Certified XTC Partners ✭✭

    1.4.2.6359

  • SteveMacdonaldSteveMacdonald CAUniversity, Certified XTC Partners ✭✭

    1.4.2.6359

  • AndyHopperAndyHopper USMember ✭✭

    OK, I've recompiled against 1.4.2 and updated the NuGet package too 1.0.25; let me know if that fixes it for you!

  • AndrewMobileAndrewMobile USMember ✭✭✭✭

    nice library Andrew

  • AndyHopperAndyHopper USMember ✭✭

    Thanks! I have a few other controls I've been meaning to add, but I'm wondering if I should simply get the controls in this package merged with Xamarin Forms Labs' set (there is some overlap).

  • BuhhSathBuhhSath USMember ✭✭

    @AndyHopper This Would be awesome if add/merge with Xlabs.

  • AlessandroCaliaroAlessandroCaliaro ITMember ✭✭✭✭✭

    @AndyHopper thanks for your work

  • SteveMacdonaldSteveMacdonald CAUniversity, Certified XTC Partners ✭✭

    Andy - sorry it took a while to get back to you.

    The BoundPicker works perfectly for me now after you recompiled it.

    Thanks!

    Steve

  • AndyHopperAndyHopper USMember ✭✭

    Awesome, thanks!

Sign In or Register to comment.