我正在使用Mvvmcross v.6.1.2开发简单的Android应用程序,但对MvxListView ItemTemplate绑定有麻烦。 这是我的ListView,它已正确绑定到ViewModel中的MvxObservableCollection Weather:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="2dp"
android:layout_gravity="center_horizontal"
local:MvxBind="Text WeatherName"/>
</LinearLayout>
这是我的ListView ItemTemplate:
local:MvxItemTemplate="ItemTemplateId weatherListItem"
response
有什么问题?
答案 0 :(得分:1)
您的版式有几个问题:
<MvxListView
android:layout_height="match_parent"
android:layout_width="match_parent"
android:divider="#000000"
android:dividerHeight="3px"
local:MvxBind="ItemsSource Weather; ItemClick ListItemClickCommand"
local:MvxItemTemplate="ItemTemplateId weatherListItem"
SelectedItem="{mvx:MvxBind CurrentWeather}"/>
第一个问题是
local:MvxItemTemplate="ItemTemplateId weatherListItem"
MvxItemTemplate
在axml
/ xml
文件中使用时,指的是用作项目模板的布局。这将是您在android资源中的布局。为了将其指向您的一种资源布局,您需要如下编写它:
local:MvxItemTemplate="@layout/nameoflayout"
这将为ListView提供一个ID,该ID在膨胀时与您的布局匹配。
这里的另一个问题是您将Xamarin.Forms XAML属性与Android属性混合在一起。
SelectedItem="{mvx:MvxBind CurrentWeather}"
该行不会膨胀,因为SelectedItem
中没有名为MvxListView
的属性。如果您希望绑定公共财产,则需要在MvxBind
中完成。
local:MvxBind="ItemsSource Weather; ItemClick ListItemClickCommand; SelectedItem CurrentWeather"
答案 1 :(得分:0)
您的ItemTemplate布局是否称为“ weatherListItem”?如果是这样,则需要这样指定ItemTemplate和SelectedItem:
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<MvxListView
android:layout_height="match_parent"
android:layout_width="match_parent"
android:divider="#000000"
android:dividerHeight="3px"
local:MvxBind="ItemsSource Weather; SelectedItem CurrentWeather; ItemClick ListItemClickCommand"
local:MvxItemTemplate="@layout/weatherListItem"/>
</LinearLayout>
此处提供了一些示例代码: https://github.com/MvvmCross/MvvmCross-Samples/tree/master/WorkingWithCollections