c# - WPF 按钮按下/释放绑定(bind)

标签 c# wpf data-binding

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

public class MainViewModel
{
    private bool _Reset;
    public bool Reset{ get{ return _Reset;} set {_Reset = value;} }
    ...
}

现在我想绑定(bind)一个按钮,这样当我按下它时 _Reset 为真,当我释放它时 _Reset 为假 我觉得命令模式对于简单的开/关有很多工作

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

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

最佳答案

所以您需要做的是导入 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");
    }
}

关于c# - WPF 按钮按下/释放绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35042512/

相关文章:

c# - AddBusinessDays 和 GetBusinessDays

c# - 如何检查文本框中的最后一行是否只有一个单词?

Grails:@BindUsing 在一个被忽略的类和@BindUsing 与 ValueConverter

angularjs - Angular 数据绑定(bind)不显示数据..

wpf - 将只读依赖属性数据绑定(bind)到 Xaml 中的 ViewModel

c# - 如何从模型中的 IList<model> 获取 Id?

C# 从网络摄像头捕获图像

c# - 使用 MS Graph SDK 从共享的 OneDrive 文件夹下载和上传 DriveItem

wpf - 单击某些其他控件时不会引发 TextBox LostFocus

c# - 从 WPF 页面应用程序中删除导航栏