为什么按钮支持RoutedEvent和命令?

时间:2013-12-02 09:32:59

标签: c# wpf mvvm binding

我碰巧看到了buttonbase.cs的参考源代码:

    protected virtual void OnClick()
    {
        RoutedEventArgs newEvent = new RoutedEventArgs(ButtonBase.ClickEvent, this); 
        RaiseEvent(newEvent);

        MS.Internal.Commands.CommandHelpers.ExecuteCommandSource(this); 
    }

我知道第一个rountedevent是我在Properties窗口中生成一个事件处理程序,第二个是我在xaml中添加的命令绑定。

我很好奇为什么按钮支持两种机制。 我可以说第一个用于向后兼容,第二个用于MVVM世界吗?

1 个答案:

答案 0 :(得分:1)

我不会将其称为向后兼容性,因为两者都是在.NET 3.0中引入的。对于MVVM中的大多数用例,命令更好,但您不能说路由事件没有用例。甚至有些情况下您可能希望使用路由命令。由编码员决定哪一个最合适。

我可以建议this article吗?