WPF按钮按下/释放绑定

MDK*_*MDK 4 c# data-binding wpf

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

public class MainViewModel
{
    private bool _Reset;
    public bool Reset{ get{ return _Reset;} set {_Reset = value;} }
    ...
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

mrs*_*ent 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");
    }
}
Run Code Online (Sandbox Code Playgroud)