我如何将此事件处理程序转换为命令?

时间:2015-03-05 19:54:19

标签: c# wpf

private void GridSplitter_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    vm.positionX = e.GetPosition((sender as GridSplitter).Parent as UIElement).X;
}

Parent是VirtualizingStackpanel。 我有点理解指挥背后的想法,但我仍然无法理解如何实现它。此事件处理程序获取Mouse的X坐标并将其发送到ViewModel的positionX。如果我把它变成一个命令,我在哪里可以得到发送者和e的信息?

1 个答案:

答案 0 :(得分:0)

通常,Commands用于类似按钮的控件,当用户与它们交互时(单击按钮,点击它等),它会触发。

Command,根据您的应用程序设计和需求,有一个CanExecute和一个Executed处理程序或事件。 这些允许你设置,如果Command可以执行,以及在执行时会发生什么。

但是,您指的是PreviewMouseDown事件。 您无法阻止系统触发此事件。因此,在这种情况下,新CanExecute的{​​{1}}或多或少无用。

要实现目标,您可以使用评论中已指出的 Ganesh Command机制。 This article以及下面的例子应该给你一个提示,它将如何运作:

EventToCommand