ModelRequestCommand = new DelegateCommand(PopulateModelRequest);
没有错误并且很好,但我想将参数(int ProgramID)传递给填充模型请求。 ProgramID由
定义this.ProgramId = ProgramID;
尝试
时出错ModelRequestCommand = new DelegateCommand(PopulateModelRequest(int ProgramID);
我该如何解决这个问题?
一个按钮绑定到WPF中的ModelRequestCommand
答案 0 :(得分:3)
首先,您编写的代码是无意义的,您尝试在函数调用期间声明参数。然后,您尝试将该调用的结果(应该是void
)传递给期望Action<object>
或可能Action
委托的构造函数。你不能这样做。
其次,ICommand
接口Execute
方法(实际上就是你实现的方法)如下所示:
void Execute(object parameter)
where参数通过调用对象上的CommandParameter
属性传递(即Button
)。 DelegateCommand
对象实现了这一点,并使用相同的参数调用在构造函数上传递的委托(该类的某些版本将允许您传递简单的Action
和DelegateCommand
忽略{{1}为了你)。
要解决此问题,请在parameter
上传递ProgramID
并执行此操作:
CommandParameter
或类似
private void PopulateModelRequest(object parameter)
{
int programId = (int)parameter;
}
第二个是在ProgramId上创建一个闭包,所以如果您可以在方法中访问该字段 ,只需使用它而不是传入它。
答案 1 :(得分:1)
该错误是因为当您将parantesis添加到此类
的方法时DatabaseReference mFirebaseDBRef = FirebaseDatabase.getInstance().getReference();
FirebaseAuth mFirebaseAuth = FirebaseAuth.getInstance();
FirebaseUser mFirebaseUser = mFirebaseAuth.getCurrentUser();
//use a POJO and make sure to have a default empty constructor in that class definition
User user = new User(name, age, gender, email)
mFirebaseDBRef.child("users").child(mFirebaseUser.getUid()).setValue(user);
您只需告诉编译器您要调用PopulateModelRequest(int ProgramID)
方法。甚至不可能调用该方法,因为您还指定了参数的类型,它只需要参数,所以您尝试做的基本错误。
如果您想将委托分配给PopulateModelRequest
,那么您应该按照第一行代码进行操作:
ModelRequestCommand
我可能误解了你的问题,但你肯定会在继续之前先看一下article ablout delegates and events。