[Visual C#]
public ICommand MyCommand
{
get
{
if (this.myCommand == null)
{
this.myCommand = new RelayCommand(this.ShowMyCommand);
}
return this.myCommand;
}
}
private void ShowMyCommand(object param)
{
...
}
这段代码工作正常,但是当我将它转换为 Visual Basic 时:
[Visual Basic]
Private _myCommand As RelayCommand
Public ReadOnly Property MyCommand As ICommand
Get
If Me._myCommand Is Nothing Then
Me._myCommand = New RelayCommand(Me.ShowMyCommand)
End If
Return Me._myCommand
End Get
End Property
Private Sub ShowMyCommand(ByVal param As Object)
...
End Sub
我得到错误:
Error 3 Argument not specified for parameter 'param' of 'Private Sub ShowMyCommand(param As Object)'.
有什么想法吗?我只是在盲目转换所以我不明白这个项目是做什么的,我只是在转换它。
最佳答案
对于 VB,我有点如履薄冰,但据我所知,您需要在方法名称前加上关键字 AddressOf
才能将其用作事件的方法组。
下面一行:
Me._myCommand = New RelayCommand(Me.ShowMyCommand)
需要写成:
Me._myCommand = New RelayCommand(AddressOf Me.ShowMyCommand)
错误消息是因为编译器正在尝试编译对该方法的调用,因此缺少对其参数的参数。
关于C# > VB 转换,RelayCommand 的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2666409/