我有一个观点AttributeView
包含各种属性。 还有一个按钮按下时,应该设置默认值的属性。 我也有一个ViewModelBase
类,是我把所有的ViewModels的基类。 问题是,我似乎无法获得绑定到WPF命令按钮。
我试过这个,但它只是没有做任何事情:
<Button Command="{Binding DataInitialization}" Content="{x:Static localProperties:Resources.BtnReinitializeData}"></Button>
该命令被定义(在ViewModelBase
)所示:
public CommandBase DataInitialization { get; protected set; }
而在应用程序启动一个新的实例为命令创建:
DataInitialization = new DataInitializationCommand()
然而,WPF结合似乎并没有“查找”命令(按下按钮什么都不做)。 在当前视图中所使用的视图模型从衍生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();
}
}
而视图模型:
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();
}
}
我希望这会给你的想法。