我正在尝试将我自己的命令绑定到按钮,但是我所做的都无法正常工作。
我通过xaml绑定了窗口数据上下文,但是当我尝试绑定到我的命令Intellisense时,甚至都看不到它并且命令没有执行。我也尝试通过代码隐藏来绑定同样的结果。
我的窗口数据绑定看起来像这样。
DataContext="{Binding Source={StaticResource mainViewModelLocator}, Path=Commands}"
mainViewModelLocator传递Commands类的新实例。
Commands类:
public ICommand GradeCommand { get; set; }
public Commands()
{
LoadCommands();
}
private void LoadCommands()
{
GradeCommand = new CustomCommand(GradeClick, CanGradeClick);
}
private void GradeClick(object obj)
{
MessageBox.Show("Test");
}
private bool CanGradeClick(object obj)
{
return true;
}
和Icommand:
private Action<object> execute;
private Predicate<object> canExecute;
public CustomCommand(Action<object> execute, Predicate<object> canExecute)
{
this.execute = execute;
this.canExecute = canExecute;
}
public bool CanExecute(object parameter)
{
bool b = canExecute == null ? true : canExecute(parameter);
return b;
}
public event EventHandler CanExecuteChanged
{
add
{
CommandManager.RequerySuggested += value;
}
remove
{
CommandManager.RequerySuggested -= value;
}
}
public void Execute(object parameter)
{
execute(parameter);
}
答案 0 :(得分:0)
我知道了。我的DataContext绑定无效。 我将其更改为:
xmlns:vm="clr-namespace:ProgramName.ViewModel"
<Window.DataContext>
<vm:Commands/>
</Window.DataContext>