WPF:如何绑定命令类?

bfrts1fy  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(95)

我有一个命令,它在一个单独的类中。
命令示例:

class TestCommand : Command
{
    public override bool CanExecute(object? parameter) => true;

    public override void Execute(object? parameter) => Application.Current.MainWindow.Title = "test";
}

命令类:

abstract class Command : ICommand
{
    public event EventHandler? CanExecuteChanged
    {
        add => CommandManager.RequerySuggested += value;
        remove => CommandManager.RequerySuggested -= value;
    }
    
    public abstract bool CanExecute(object? parameter);
    
    public abstract void Execute(object? parameter);
}

问题是我不能将这个命令绑定到视图中的一个按钮或另一个对象(除了MenuItem)。但是如果我在视图模型中声明了一个命令,那么我就可以绑定它。
XAML文件示例

<Window.DataContext>
    <local:MainViewModel/>
</Window.DataContext>

<Grid>
    <button Command = "{Binding ???}"/>
    
    <!--but-->
    <MenuItem>
        <MenuItem.Command>
            <cmd:TestCommand/> <!--it works-->
        </MenuItem.Command>
    </MenuItem>
</Grid>

可以将一个命令类绑定到一个按钮上吗?
我试过:编辑DataContext,添加RelativeSource

of1yzvn4

of1yzvn41#

创建TestCommandpublic并向视图模型添加一个属性:

public TestCommand TheCommand { get; } = new TestCommand();

然后绑定到此属性:

<Button Command = "{Binding TheCommand}"/>

相关问题