如何将WPF按钮绑定到ViewModelBase中的命令?

我有一个包含各种属性的视图AttributeView 。 还有一个按钮,按下时,它应该将默认值设置为属性。 我也有一个ViewModelBase类,它是我拥有的所有ViewModel的基类。 问题是我似乎无法获得绑定到WPF命令的按钮。

我试过这个,但它没有做任何事情:

<Button Command="{Binding DataInitialization}" Content="{x:Static localProperties:Resources.BtnReinitializeData}"></Button>

该命令是这样定义的(在ViewModelBase ):

public CommandBase DataInitialization { get; protected set; }

并在应用程序启动时为该命令创建一个新实例:

DataInitialization = new DataInitializationCommand()

但是,WPF绑定似乎没有“查找”命令(按下按钮不会执行任何操作)。 当前视图中使用的ViewModelBase派生自ViewModelBase 。 还有什么我可以尝试的(我对WPF很陌生,所以这可能是一个非常简单的问题)?


 <Grid >
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Button Command="{Binding ClickCommand}" Width="100" Height="100" Content="wefwfwef"/>
</Grid>

窗口后面的代码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new ViewModelBase();
    }
}

和ViewModel:

public class ViewModelBase
{
    public ViewModelBase()
    {
        _canExecute = true;
    }
    private ICommand _clickCommand;
    public ICommand ClickCommand
    {
        get
        {
            return _clickCommand ?? (_clickCommand = new CommandHandler(() => MyAction(), _canExecute));
        }
    }
    private bool _canExecute;
    public void MyAction()
    {

    }
}
public class CommandHandler : ICommand
{
    private Action _action;
    private bool _canExecute;
    public CommandHandler(Action action, bool canExecute)
    {
        _action = action;
        _canExecute = canExecute;
    }

    public bool CanExecute(object parameter)
    {
        return _canExecute;
    }

    public event EventHandler CanExecuteChanged;

    public void Execute(object parameter)
    {
        _action();
    }
}

我希望这会给你这个想法。

链接地址: http://www.djcxy.com/p/9599.html

上一篇: How to bind WPF button to a command in ViewModelBase?

下一篇: How and where do ICommands fit into the overall WPF MVVM pattern?