【发布时间】:2013-01-16 20:20:31
【问题描述】:
我有 2 个 ViewModels(ConfigurationViewModel 和 EditConfigurationViewModel)。在ConfigurationViewModel 我有以下代码:
public ConfigurationViewModel()
{
NewConfigCommand = new MvxRelayCommand(DoNewConfig);
EditConfigCommand = new MvxRelayCommand<ConfigurationSet>(DoEditConfig);
}
private void DoNewConfig()
{
this.RequestNavigate<EditConfigurationViewModel>();
}
private void DoEditConfig(ConfigurationSet config)
{
this.RequestNavigate<EditConfigurationViewModel>(new { id = config.Id.ToString() });
}
在 EditConfigurationViewModel 我有以下代码:
public EditConfigurationViewModel()
{
Configuration = new ConfigurationSet();
}
public EditConfigurationViewModel(string id)
{
Configuration = ConfigDataStore.GetConfiguration(Guid.Parse(id));
}
我想要实现的是非常简单的......在ConfigurationViewModel 触发NewConfigCommand 时,我想导航到EditConfigurationViewModel,并使用无参数构造函数。当EditConfigCommand 被触发时,我想使用接收string 的构造函数。
这段代码的问题是,无论触发什么命令,总是使用无参数构造函数,并且代码永远不会到达另一个构造函数。
我做了一些实验,通过删除无参数构造函数,结果是调用了另一个构造函数,我得到了EditConfigurationCommand 的预期结果,但是如果我尝试触发NewConfigurationCommand,则会抛出异常由于不存在无参数构造函数(到目前为止还不错)。
不幸的是,此时我没有安装VS2010,所以我无法通过PCL代码进行调试......我做了一些“眼睛调试”并找到了这个类MvxViewModelLocator。我认为问题出在此处。可能在DoLoad 方法中尝试获取MethodInfo...
此时我只想知道我做错了什么,或者这是否是预期的结果。同时我想我会抓住机会安装 VS2010 并祈祷它不会破坏任何东西......
【问题讨论】:
标签: c# variables constructor mvvmcross