Wpf RelayCommand命令参数为空

Wpf RelayCommand命令参数为空,wpf,vb.net,null,relaycommand,commandparameter,Wpf,Vb.net,Null,Relaycommand,Commandparameter,我的用户控件上有一个按钮 <Button Grid.Row="13" Grid.Column="7" Content="Save" Name="btnSave" CommandParameter="{Binding CompanyDetails}" Command="{Binding SaveCommand}" /> usercontrol上的其他字段绑定到ObjectDataProvider,后者调用GetCompanyDetai

我的用户控件上有一个按钮

<Button Grid.Row="13" Grid.Column="7" Content="Save" Name="btnSave" 
            CommandParameter="{Binding CompanyDetails}"
            Command="{Binding SaveCommand}" />
usercontrol上的其他字段绑定到ObjectDataProvider,后者调用GetCompanyDetails函数。每次调用此函数时,CompanyDetails都设置正确,直到调用SaveIt子例程为止。调用SaveIt时,其参数始终为Nothing。我在哪里犯错误? 非常感谢您的回答。

在CompanyViewModel的构造函数中,使用GetCompanyDetails函数填充CompanyDetails。将构造函数更改为以下内容:

Public Sub New()
    _myData = New DataFromDatabase(My.Settings.ConnectionString)
    _saveCommand = New RelayCommandWithParameter(New Action(Of Object)(AddressOf SaveIt))
    _companyDetails = GetCompanyDetails()  
End Sub
这可能会有帮助。
祝你好运。

我做VB已经有一段时间了,我从来没有用WPF做过,但我想我知道你的问题是什么

按照初始化命令的方式,实际上并没有传入参数

当我用c语言做时,它看起来是这样的=>

_saveCommand = new RelayCommandWithParameter(
            (param) =>
            {
                SaveIt((int)param);
            },
               // this line is the same as your commented out Me.CanSave
            (param) => { return this.CanDisplaySelectedPolicy; }); 
您可以看到,在lamda表达式中,我传递了一个名为param的参数,然后将其放入SaveIt方法中

创建新操作时,请尝试像上面那样在其中放入lamda表达式,以便可以将参数传递到SaveIt方法中

_saveCommand = new RelayCommandWithParameter(
            (param) =>
            {
                SaveIt((int)param);
            },
               // this line is the same as your commented out Me.CanSave
            (param) => { return this.CanDisplaySelectedPolicy; });