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; });