WPF按钮按下/释放绑定

时间:2016-01-27 16:15:59

标签: c# wpf data-binding

我是WPF的新手并且尽力遵循MVVM按钮我正在努力应对当前的问题 我有一个视图模型类

library(dplyr)
data %>%
  group_by(Compound) %>%
  summarize_each(funs(mean), -ExpNum)

现在我想绑定一个按钮,这样如果我按下它_Reset是真的,当我释放它_Reset是假的 我觉得命令模式对于一个简单的开/关

有很多工作要做

有没有办法将按钮的IsPressed绑定到我的数据上下文中的属性

我想尽可能简单地做到这一点,因为我有十几个按钮都在做其他属性的事情

1 个答案:

答案 0 :(得分:5)

因此,您需要做的是导入System.Windows.Interactivity。转到参考,添加参考,装配,扩展。你会在那里找到它。接下来将其添加到您的项目

xmlns:inter="http://schemas.microsoft.com/expression/2010/interactivity"

您现在可以使用PreviewMouseLeftButtonDownPreviewMouseLeftButtonUp事件。

<Button Content="Some Button">
        <inter:Interaction.Triggers>
            <inter:EventTrigger EventName="PreviewMouseLeftButtonDown">
                <inter:InvokeCommandAction Command="{Binding ButtonDown}"/>
            </inter:EventTrigger>
            <inter:EventTrigger EventName="PreviewMouseLeftButtonUp">
                <inter:InvokeCommandAction Command="{Binding ButtonUp}"/>
            </inter:EventTrigger>
        </inter:Interaction.Triggers>
    </Button>

 public class MainViewModel : ViewModelBase
{
    public MainViewModel()
    {
        ButtonDown = new RelayCommand(OnButtonDown);
        ButtonUp = new RelayCommand(OnButtonUp);
    }
    public RelayCommand ButtonDown { get; set; }
    public RelayCommand ButtonUp { get; set; }

    private void OnButtonUp()
    {
        Debug.WriteLine("Button Released");
    }

    private void OnButtonDown()
    {
        Debug.WriteLine("Button Pressed");
    }
}