小编use*_*522的帖子

WPF CommandParameter绑定问题

我在理解命令参数绑定如何工作方面遇到了一些麻烦.

当我在调用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)

wpf commandbinding

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

commandbinding ×1

wpf ×1