如何将WPFbutton绑定到ViewModelBase中的命令?
我有一个包含各种属性的视图AttributeView
。 还有一个button,按下时,它应该将默认值设置为属性。 我也有一个ViewModelBase
类,它是所有ViewModel的基类。 问题是我似乎无法获得绑定到WPF命令的button。
我已经试过这个,但是它没有做任何事情:
<Button Command="{Binding DataInitialization}" Content="{x:Static localProperties:Resources.BtnReinitializeData}"></Button>
命令是这样定义的(在ViewModelBase
):
public CommandBase DataInitialization { get; protected set; }
并在应用程序启动时为该命令创build一个新的实例:
DataInitialization = new DataInitializationCommand()
但是,WPF绑定似乎没有“find”命令(按下button什么都不做)。 当前视图中使用的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(); } }
我希望这会给你这个想法。