我使用WPF(.NET 4.5)和VB.NET与MVVM Light。我的Button
中的Toolbar
绑定到底层VM的RelayCommand
。 {1}在XAML中看起来像这样:
Button
底层命令在ViewModel中声明如下:
<Button Command="{Binding Path=BringLayerForwardCommand}" CommandParameter="{Binding SelectedLayer}">
Button在运行时的行为如下:
Public Property BringLayerForwardCommand As New RelayCommand(Of Layer) _
(Sub(p) BringLayerForward_Executed(p), _
Function(p) p IsNot Nothing AndAlso _
Me.Layers IsNot Nothing AndAlso
(p.ZOrder < Me.Layers.Where(Function(l) l.IsFront = p.IsFront).Max(Function(l2) l2.ZOrder)))
部分的断点(上面的RelayCommand构造函数的第二个参数)永远不会被击中。CanExecute
被启用。 删除lambda部分后,上面的命令如下所示:
Button
这是一个错误还是我真的错过了一些明显的东西?
进一步调查表明,如果我将整个匿名函数移动到常规函数,那么一切都开始正常工作。真的好像是个bug。
答案 0 :(得分:0)
我认为您可能希望在此问题上关闭;)。
我怀疑是“问题7721:闭包无法与RelayCommand一起使用”,请参见:http://www.mvvmlight.net/installing/changes。
此错误已在5.4.1中修复。