Reputation: 711
I've got the exact same (like, I've diffed them looking for a typo) thing working on different lists in the same application. Does anyone know why my list item properties won't bind?
ViewModel - This seems to be working fine. I'm getting the correct number of rows, and I can see these ItemViewModels on the ItemSelected command. Therefore, the block below appears to be in working order:
public ObservableCollection<ItemViewModel> Items
{
get { return _items; }
set
{
_items= value;
RaisePropertyChanged(() => Items);
}
}
<namespace.MyListView
android:id="@+id/my_list"
android:layout_below="@+id/toolbar_title"
android:layout_marginTop="30dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
local:MvxItemTemplate="@layout/my_item_rowlayout"
local:MvxBind="ItemsSource Items; ItemClick ItemSelectedCommand;" />
ItemViewModel - I can see these on the table's ItemSelected command, but none of the properties will bind to the layout.
public string Path
{
get { return _path; }
set
{
_path = value;
RaisePropertyChanged(() => Path);
}
}
public ItemViewModel()
{
Path = "some value";
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<TextView
android:id="@+id/item_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="15dp"
android:textColor="@android:color/black"
tools:text="test text"
android:singleLine="true"
android:textStyle="normal"
local:MvxBind="Text Path" />
</LinearLayout>
While debugging MyListView, I can use GetChildAt to observe views that look like this:
base = {MvvmCross.Binding.Droid.Views.MvxBaseListItemView}
+ base {Android.Widget.FrameLayout} Android.Widget.FrameLayout
- BindingContext {MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext} MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext
- DataContext {Namespace.ItemViewModel} Namespace.ItemViewModel
All of my properties are in there.
ListView:
[Android.Runtime.Preserve(AllMembers = true)]
public class MyListView: MvxListView
{
public MyListView(Context context, IAttributeSet attrs)
: base(context, attrs)
{
}
}
From output:
MvxBind:Error: 20.30 Problem parsing binding MvxException: Cannot terminate binding expression during option Path in Text Path
at MvvmCross.Binding.Parse.Binding.MvxBindingParser.ParseEquals (System.String block) [0x00008] in D:\git\MvvmCross\MvvmCross\Core\Binding\Parse\Binding\MvxBindingParser.cs:80
at MvvmCross.Binding.Parse.Binding.Swiss.MvxSwissBindingParser.ParseNextBindingDescriptionOptionInto (MvvmCross.Binding.Parse.Binding.MvxSerializableBindingDescription description) [0x00091] in D:\git\MvvmCross\MvvmCross\Core\Binding\Parse\Binding\Swiss\MvxSwissBindingParser.cs:39
at MvvmCross.Binding.Parse.Binding.Tibet.MvxTibetBindingParser.ParseNextBindingDescriptionOptionInto (MvvmCross.Binding.Parse.Binding.MvxSerializableBindingDescription description) [0x0002e] in D:\git\MvvmCross\MvvmCross\Core\Binding\Parse\Binding\Tibet\MvxTibetBindingParser.cs:49
at MvvmCross.Binding.Parse.Binding.Swiss.MvxSwissBindingParser.ParseBindingDescription (MvvmCross.Binding.Parse.Binding.Swiss.MvxSwissBindingParser+ParentIsLookingForComma parentIsLookingForComma) [0x0000c] in D:\git\MvvmCross\MvvmCross\Core\Binding\Parse\Binding\Swiss\MvxSwissBindingParser.cs:195
at MvvmCross.Binding.Parse.Binding.Swiss.MvxSwissBindingParser.ParseBindingDescription () [0x00000] in D:\git\MvvmCross\MvvmCross\Core\Binding\Parse\Binding\Swiss\MvxSwissBindingParser.cs:178
at MvvmCross.Binding.Parse.Binding.MvxBindingParser.ParseTargetPropertyNameAndDescription () [0x0000c] in D:\git\MvvmCross\MvvmCross\Core\Binding\Parse\Binding\MvxBindingParser.cs:73
at MvvmCross.Binding.Parse.Binding.MvxBindingParser.TryParseBindingSpecification (System.String text, MvvmCross.Binding.Parse.Binding.MvxSerializableBindingSpecification& requestedBindings) [0x00015] in D:\git\MvvmCross\MvvmCross\Core\Binding\Parse\Binding\MvxBindingParser.cs:52
Upvotes: 0
Views: 312
Reputation: 711
After getting a hint to look at the output log, I found an exception and after a bit of searching it seems to have occurred when trying to use reserved keywords. "Path" is reserved, changing the property name resolved the issue.
Looking at the output log is key...
Upvotes: 1