我在理解命令参数绑定如何工作方面遇到了一些麻烦.
当我在调用InitializeComponent之前创建一个widget类的实例时,它似乎工作正常.对ExecuteCommand函数中的参数(Widget)的修改将"应用"到_widget.这是我预期的行为.
如果在InitializeComponent之后创建了_widget的实例,我会在ExecuteCommand函数中获得e.Parameter的空引用异常.
为什么是这样?如何使用MVP模式进行此工作,在创建视图后可以创建绑定对象?
public partial class WidgetView : Window
{
RoutedCommand _doSomethingCommand = new RoutedCommand();
Widget _widget;
public WidgetView()
{
_widget = new Widget();
InitializeComponent();
this.CommandBindings.Add(new CommandBinding(DoSomethingCommand, ExecuteCommand, CanExecuteCommand));
}
public Widget TestWidget
{
get { return _widget; }
set { _widget = value; }
}
public RoutedCommand DoSomethingCommand
{
get { return _doSomethingCommand; }
}
private static void CanExecuteCommand(object sender, CanExecuteRoutedEventArgs e)
{
if (e.Parameter == null)
e.CanExecute = true;
else
{
e.CanExecute = ((Widget)e.Parameter).Count < 2;
} …
Run Code Online (Sandbox Code Playgroud)