绑定到没有datacontext的静态资源viewmodel中的命令

时间:2013-12-10 23:40:49

标签: c# wpf

我有一个在我的应用程序资源中定义的ViewModel,这个ViewModel有一个名为RunCommand的命令

在我的MainWindow中我试图将该命令绑定到一个按钮而不设置datacontext所以我试过

<Button Command="{Binding Source={StaticResource ViewModel.RunCommand}}"/>

它显示了一个例外,但是当我做以下事情时工作正常

<Button DataContext="{Binding Source={StaticResource ViewModel}}" Command="{Binding RunCommand}"/>

第一部分有什么问题,我是否必须为这么简单的任务设置datacontext?

2 个答案:

答案 0 :(得分:1)

您当然不会被迫更改/设置DataContext,因此您可以绑定一个简单的属性。

这就是你想要的

<Button Command="{Binding RunCommand, Source={StaticResource ViewModel}}"/>

答案 1 :(得分:0)

设置datacontext是一件好事......它会消除你正在谈论的对象的伏都教。我相信所有MVVM框架都可以帮助你使用定位器,当不使用它们时,你可以使用你的代码。

这就是语言的运作方式。