我是WPF的新手,正在尽最大努力按照MVVM按钮操作。我正在处理当前的问题,我有一个视图模型类
public class MainViewModel
{
private bool _Reset;
public bool Reset{ get{ return _Reset;} set {_Reset = value;} }
...
}
现在我想绑定一个按钮,这样如果我按下它时_Reset为true,而当我释放它时_Reset为false,我会觉得命令模式对于一个简单的开/关来说工作量很大
是否有办法将按钮的IsPressed绑定到数据上下文中的属性
我想尽可能简单地执行此操作,因为我有一打左右的按钮,它们都在执行其他属性类型的操作
2条答案
按热度按时间dced5bon1#
所以你需要做的就是导入
System.Windows.Interactivity
。转到references,添加reference,Assemblies,Extensions。你会在那里找到它。接下来把它添加到你的项目中xmlns:inter="http://schemas.microsoft.com/expression/2010/interactivity"
现在可以使用
PreviewMouseLeftButtonDown
和PreviewMouseLeftButtonUp
事件。kadbb4592#
如果使用.NET Core 3.1 / .NET 5.0或更高版本,则
System.Windows.Interactivity
已被弃用,请改为将Microsoft.Xaml.Behaviors.Wpf
NuGet包添加到项目中。该包的工作方式与.NET Framework 4.8.x或更低版本的answer here非常相似。在你的xaml头中你需要添加引用到
现在,您可以装饰按钮或其他项目,您尝试的事件触发器,如
PreviewMouseLeftButtonDown
。现在允许绑定到视图模型类中的
System.Windows.Input.ICommand
属性,在这个例子中,我使用CommunityToolkitm.Mvvm中的RelayCommand
对象并写入调试控制台,但是这可以用任何对静态项的调用来内联替换,或者如果操作不是静态项,可以在视图模型类的构造函数中完成。