【发布时间】:2015-05-29 09:27:15
【问题描述】:
我正在尝试将 ReactiveUI 与 Xamarin Forms 一起使用,但在让 View Model Location 在具有 ItemTemplate 的 ListView 中工作时遇到了一些困难。
我已经在 AppBootstrapper.cs 中注册了 View 和 ViewModel ,代码如下:
Locator.CurrentMutable.Register(() =>
new MonkeyCellView(), typeof(IViewFor<MonkeyCellViewModel>));
我还在 XAML 中引用了 ReactiveUI.XamForms 命名空间,并将 ViewModelViewHost 包装在 Page 元素中:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="XamarinFormsReactiveListView.Views.MonkeyListView"
xmlns:rui="clr-namespace:ReactiveUI.XamForms;assembly=ReactiveUI.XamForms">
<StackLayout>
<Button x:Name="AddMonkey" Text="Add Monkey"/>
<ListView ItemsSource="{Binding Monkeys}" x:Name="MonkeyList">
<ListView.ItemTemplate>
<DataTemplate>
<Page>
<rui:ViewModelViewHost x:Name="vmvh" ViewModel="{Binding .}" />
</Page>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
注意:您必须将 ViewModelViewHost 包装在 Page 元素中,因为这是 ReactiveUI 和 Xamarin Forms for ViewModelViewHost 目前支持的唯一元素,根据此文件:
当我运行 XamarinFormsReactiveListView.iOS 项目时,我在 System.Reflection.TargetInvocationException 的 InnerException 中收到以下错误消息:
不知道如何检测 ReactiveUI.XamForms.ViewModelViewHost 何时激活/停用,您可能需要实现 IActivationForViewFetcher
【问题讨论】:
标签: c# ios listview xamarin reactiveui