I am using MvxBindableListView
to bind a List<>
of data objects to a ListView
. The layout I am using for the rows has several TextView
s. I am successfully binding the Text
property for each of these to a property in my data object, but I have found that I cannot bind to TextColor
as that property does not exist in Mono For Android TextView
s; instead you have use the SetTextColor()
method. So how can I bind a data object property to a method?! Below is the code I tried to use:
<TextView
android:id="@+id/MyValueTextView"
android:layout_width="50dp"
android:layout_height="20dp"
android:layout_gravity="right"
android:gravity="center_vertical|right"
android:textSize="12sp"
local:MvxBind="
{
'Text':{'Path':'MyValue','Converter':'MyValueConverter'},
'TextColor':{'Path':'MyOtherValue','Converter':'MyOtherConverter'}
}" />
There's an example of adding a custom 2-way binding for "IsFavorite" in the Conference sample - see:
FillTargetFactories
in https://github.com/slodge/MvvmCross/blob/master/Sample%20-%20CirriousConference/Cirrious.Conference.UI.Droid/Setup.csThis example is explained a bit further in: MVVMCross Bindings in Android
For a one-way "source-to-target" custom binding, the code should be a bit simpler - you only need to handle the
SetValue
- and don't need to invokeFireValueChanged
in any event handling code.For textColor, I'd imagine the binding would look a bit like:
and would be setup with:
Note: I've not compiled this example code - when you do get it working, please come back and correct this pseudo-code :)