C# 绑定命令的正确方法
我试图将自己的命令绑定到按钮,但我尝试的任何操作都不起作用 我通过XAML绑定了窗口的C# 绑定命令的正确方法,c#,wpf,mvvm,data-binding,C#,Wpf,Mvvm,Data Binding,我试图将自己的命令绑定到按钮,但我尝试的任何操作都不起作用 我通过XAML绑定了窗口的DataContext,但是当我尝试绑定到命令时,IntelliSense没有看到它,并且命令没有执行。我试图通过代码隐藏绑定,但也遇到了相同的结果 窗口的绑定如下所示 DataContext="{Binding Source={StaticResource mainViewModelLocator}, Path=Commands}" mainViewModelLocator传递命令类的新实例 命令类: pu
DataContext
,但是当我尝试绑定到命令时,IntelliSense没有看到它,并且命令没有执行。我试图通过代码隐藏绑定,但也遇到了相同的结果
窗口的绑定
如下所示
DataContext="{Binding Source={StaticResource mainViewModelLocator}, Path=Commands}"
mainViewModelLocator
传递命令
类的新实例
命令
类:
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);
}
执行私有操作;
私有谓词执行;
公共自定义命令(操作执行,谓词canExecute)
{
this.execute=execute;
this.canExecute=canExecute;
}
公共布尔CanExecute(对象参数)
{
bool b=canExecute==null?true:canExecute(参数);
返回b;
}
公共事件事件处理程序CanExecuteChanged
{
添加
{
CommandManager.RequerySuggested+=值;
}
去除
{
CommandManager.RequerySuggested-=值;
}
}
public void Execute(对象参数)
{
执行(参数);
}
我想出来了。我的DataContext绑定不起作用。
我把它改成:
xmlns:vm="clr-namespace:ProgramName.ViewModel"
<Window.DataContext>
<vm:Commands/>
</Window.DataContext>
xmlns:vm=“clr命名空间:ProgramName.ViewModel”