PreviewMouseLeftButtonDown事件阻止命令

时间:2016-07-27 09:59:22

标签: c# wpf xaml data-binding

我有一个绑定到这样的命令的按钮

<Button Command="{Binding Path=DataContext.MyCommand, ElementName=MyWindow}"
        CommandParameter="{Binding}"
        PreviewMouseLeftButtonDown="Button_PreviewMouseLeftButtonDown">

我正在使用Button_PreviewMouseLeftButtonDown打开一个包含此代码的确认窗口

private void CopyButton_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        if (MessageBox.Show(Resources.Strings.MessageBox,
                            Resources.Strings.ConfirmOperationMessageBox,
                            MessageBoxButton.YesNo,
                            MessageBoxImage.Question,
                            MessageBoxResult.Yes) != MessageBoxResult.Yes)
        {
            e.Handled = true;
            return;
        }
    }

这可以很好地停止调用命令,但即使MessageBoxResult为yes,也不会以某种方式调用该命令。

我目前使用的一个简单的工作方法是在PreviewMouseLeftButtonDown事件处理程序中添加一个MyCommand.Execute,但我真的不喜欢在后面的代码中添加对ViewModel的引用。

我想知道是否有一个更好的解决方案,我想要实现的目标,或者是否有人知道为什么事件会停止调用该命令。

0 个答案:

没有答案