【发布时间】:2013-10-28 09:14:06
【问题描述】:
我正在使用 .Net 和 MVVM Light 创建应用程序,但 RelayCommands 遇到了一些问题。
我正在尝试创建一个接收单个参数并将其传递给同一 ViewModel 中的函数的 RelayCommand。但是,每次我尝试这样做时,我都会收到以下异常:
“System.MethodAccessException”类型的第一次机会异常 发生在 mscorlib.dll 中
我的代码如下。
XAML
<TextBlock Style="{StaticResource QueryFormTab}" >
<Hyperlink Command="{Binding TestCommand}" CommandParameter="Tester">
Test
</Hyperlink>
</TextBlock>
视图模型
public RelayCommand<string> TestCommand { get; private set; }
// in the constructor
TestCommand = new RelayCommand<string>((param) => _testExecute(param));
// function in viewmodel
private void _testExecute(string s)
{
Trace.WriteLine("Test");
ViewModelVariable = "abc";
}
如果我将函数 _testExecute 设为静态,它可以工作,但是我无法访问我的视图模型中的任何其他函数。
我一直试图弄清楚这一点,但没有任何运气。
【问题讨论】:
-
认为这可能与我的 ViewModelLocator 类有关,该类目前使用以下内容:return ServiceLocator.Current.GetInstance
(); -
这被标记为已回答,但是:我将您的代码复制到我正在运行的现有项目中,然后单击
Test超链接完美运行,没有烦躁或任何事情......您的定位器未定义,或者您的数据上下文不正确,或者您没有正确的 MVVM-Light 文件。如果您想尝试解决它,请留言,我会看看是否可以提供帮助。 (或者,您也可以使用自己的实现 :)
标签: .net mvvm arguments mvvm-light relaycommand