0
我的WPF-App的主窗口上有很多按鈕。 這些按鈕的命令應該具有相同的實現/功能,但取決於按下哪個按鈕,函數訪問的文件/路徑發生了變化。 如何在不使用按鈕點擊事件處理程序(Windows窗體)的情況下檢測從ViewModel單擊哪個按鈕?檢測從ViewModel中點擊了哪個按鈕WPF
這裏是類RelayCommand執行:
public class RelayCommand : ICommand
{
readonly Func<Boolean> _canExecute;
readonly Action _execute;
public RelayCommand(Action execute)
: this(execute, null)
{
}
public RelayCommand(Action execute, Func<Boolean> canExecute)
{
if (execute == null)
throw new ArgumentNullException("execute");
_execute = execute;
_canExecute = canExecute;
}
public event EventHandler CanExecuteChanged
{
add
{
if (_canExecute != null)
CommandManager.RequerySuggested += value;
}
remove
{
if (_canExecute != null)
CommandManager.RequerySuggested -= value;
}
}
public Boolean CanExecute(Object parameter)
{
return _canExecute == null ? true : _canExecute();
}
public void Execute(Object parameter)
{
_execute();
}
}
下面是命令的視圖模型代碼:
void DoThisWorkExecute()
{
// if Button1 is clicked...do this
// if Button2 is clicked...do this
}
bool CanDoThisWorkExecute()
{
return true;
}
public ICommand ButtonCommand { get { return new RelayCommand(DoThisWorkExecute, CanDoThisWorkExecute); } }
你是如何實例化的按鈕?常見的MVVM方式是綁定XAML中的Command和CommandParameter,然後使用該參數來確定路徑。 – PMV
字段'_execute'和'_canExecute'的定義有點不確定(MVVM指示燈?)。它應該是'Action