MvvmCross doesn't currently implement the IDataErrorInfo level of data-binding
This is mainly because no-one has yet asked for it - but I guess that might just change with this question. If you do have specific requirements, then the project would be interested to hear them - suspect the best place for that is github issues for the project.
For your specific questions...
The approach of binding to an ObservableDictionary which implements the INotifyCollectionChanged and INotifyPropertyChanged should work.
However, looking at the code in your link, I don't think that dictionary is correctly implementing INotifyPropertyChanged - in addition to the INotifyCollectionChanged events, it should also be raising the property change notifications on Count and Item[] - without these the binding to the whole set will work, but not to individual items and to count. For an example source of ObservableCollection, see https://github.com/mosa/Mono-Class-Libraries/blob/master/mcs/class/System/System.Collections.ObjectModel/ObservableCollection.cs
Looking a second time at the code in your link, it appears that the dictionary is correctly implementing INotifyPropertyChanged - it is raising the property change notifications Item[] - and this is the string required for the individual items to bind. Do you have debug trace enabled? Does the trace give you any clue about why it is failing?
I've submitted some fixes today - https://github.com/slodge/MvvmCross/issues/345 - and have tested them in this sample - Test_WithErrors.axml - I would expect this same sample should work on iOS (the iOS test app is a work in progress) and that it should also be extensible for Jeremy's excellent FluentValidation (although I've not used that in PCL form yet)
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Enter email:"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="30dp"
local:MvxBind="Text Email"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#ff0000"
local:MvxBind="Text Errors['Email']"
/>
Thanks for pointing out this error - fixed binaries will be nuget in the next day or two!
On the int-string question, the binding layer currently "does it's best" (TM) to convert UI types to VM types. However, there is no event currently triggered when it fails - so there is no way to fire any validation rules in the ViewModel from the binding.
Instead, where free text input is allowed, I think you'll need to implement the ViewModel types as string and will then need to trigger the validation rules when the ViewModel property changes. Because MvvmCross doesn't expose any binding level hooks for when validation occurs, you'll maybe need to tweak when binding occurs (e.g. on first responder resign) rather than having continual validation - but this should be fairly straight-forward using a custom-binding.