我的WPF-App主窗口上有很多按钮。这些按钮的命令应该具有相同的实现/功能,但是根据按下的按钮,函数访问的文件/路径会发生变化。如何使用CommandParameter检测从ViewModel中单击了哪个按钮?如何在Dowork方法中使用此参数? 在这个例子中,Button1的CommandParameter称为“button1”,Button2的CommandParameter称为“button2”。
她是我的ViewModel中的Backgroundworker的代码:
public ViewModel()
{
...
this.instigateWorkCommand = new DelegateCommand(o => this.worker.RunWorkerAsync(), o => !this.worker.IsBusy);
this.worker = new BackgroundWorker();
this.worker.DoWork += this.DoWork;
this.worker.ProgressChanged += this.ProgressChanged;
this.worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_Completeted);
this.worker.WorkerReportsProgress = true;
}
她是我的ViewModel中的Dowork代码:
private void DoWork(object sender, DoWorkEventArgs e)
{
// if (parameter.ToString().contains("button1")...
// if (parameter.ToString().contains("button2")...
}
答案 0 :(得分:2)
通常,您使用RunWorkerAsync(object)方法将参数传递给DoWork
方法。
this.worker.RunWorkerAsync("button1");
在DoWorkEventArgs
中,属性Argument包含您传递给方法RunWorkerAsync的值。
private void DoWork(object sender, DoWorkEventArgs e)
{
if (e.Argument == "button1"){
}
}
答案 1 :(得分:0)
我建议,当你Run
工作人员使用任何按钮时,将参数作为对象传递给RunWorkerAsync(param)方法。