c# - 绑定(bind)命令的正确方法

标签 c# wpf mvvm data-binding

我正在尝试将我自己的命令绑定(bind)到一个按钮,但我没有尝试任何工作。

我得到了窗口的 DataContext通过 XAML 绑定(bind),但是当我尝试绑定(bind)到我的命令时,IntelliSense 没有看到它,并且该命令没有执行。我尝试通过代码隐藏进行绑定(bind),但也遇到了相同的结果。

window 的Binding看起来像这样。

DataContext="{Binding Source={StaticResource mainViewModelLocator}, Path=Commands}"
mainViewModelLocator传递 Commands 的新实例类(class)。
Commands类(class) :
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);
        }

最佳答案

我想到了。我的 DataContext 绑定(bind)不起作用。
我将其更改为:

xmlns:vm="clr-namespace:ProgramName.ViewModel"
    <Window.DataContext>
        <vm:Commands/>
    </Window.DataContext>

关于c# - 绑定(bind)命令的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56816697/

相关文章:

c# - 如何在 C# 中使用 Unity 访问 android 系统设置

WPF,带有MVVM(Caliburn.Micro)的可绑定(bind)richTextBox-文档已经属于另一个RichTextBox

c# - 无法使用 Prism 从回调方法内部导航

wpf - WPF显示/隐藏带有触发器的控件

c# - ListBox ItemTemplate 中的按钮未选择项目

swift - 通用函数参数给出 "Expression type is ambiguous without more context"

c# - 可以在java中使用在vb.net或c#中创建的库吗?

c# - 集合被修改;枚举操作可能不会在选择期间执行

C# WCF MySQL 跟踪并发用户

wpf - 关注 xaml 或 ViewModel 中的一行