编辑 2:如果您正在寻找类似问题的答案,请查看 Stuart 的答案和我对此的评论。
编辑:我实际上得到了一个Mono.Debugger.Soft.VMDisconnectedException
. 我最近还安装了 Windows 8.1 和 Resharper(尽管 Resharper 现在已暂停)。
当我在我的 MVVMCross Xamarin iOS 应用程序中访问我的视图模型的一个非常简单的列表属性时,程序失败了。它大部分时间都不会退出:它就像在运行一样。模拟器黑屏,也不例外。如果我断点if (messagesViewModel != null) source.ItemsSource = messagesViewModel.Messages;
然后输入messagesViewModel.Messages
即时窗口,一切都会停止,所以我可以说它在这一行失败了。相反,如果我“跨过”,它永远不会移动到下一行。
当我在以下代码中切换此代码时,我遇到了类似的行为MvxTableViewSource
:
public override int RowsInSection(UITableView tableview, int section)
{
return 1;
}
我的视图模型如下所示:
public class MessagesViewModel : MvxViewModel
{
private List<BaseMessage> _messages = null;
public List<BaseMessage> Messages
{
get
{
return _messages; //yes, I know I'm returning null
//I wasn't at first.
}
}
public MessagesViewModel()
{
}
}
这是我在 MvxTableViewController 上的 ViewDIdLoad:
public override void ViewDidLoad()
{
base.ViewDidLoad();
var source = new MessagesTableViewSource(TableView);
//was binding here, removed it for debug purposes
//failure on second line here
var messagesViewModel = ViewModel as MessagesViewModel;
if (messagesViewModel != null) source.ItemsSource = messagesViewModel.Messages;
TableView.Source = source;
TableView.ReloadData();
}
一些初始化代码:
public class App : MvxApplication
{
public App()
{
var appStart = new MvxAppStart<MessagesViewModel>();
Mvx.RegisterSingleton<IMvxAppStart>(appStart);
}
}
public partial class AppDelegate : MvxApplicationDelegate
{
//empty functions removed.
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
Window = new UIWindow(UIScreen.MainScreen.Bounds);
var presenter = new MvxTouchViewPresenter(this, Window);
var setup = new Setup(this, presenter);
setup.Initialize();
var startup = Mvx.Resolve<IMvxAppStart>();
startup.Start();
Window.MakeKeyAndVisible();
return true;
}
}