c# - 有什么方法可以避免实现 ICommand 以在 MVVM 中使用 Button?
问题描述
我正在开发一个非常简单的应用程序,一个带有几个按钮的视图。我想可以使用视图模型中按钮的单击事件。
但是我只找到了需要使用 blend 中的 Interactivity.dll 的示例,或者我必须实现 ICommand 接口或其他一些解决方案。
我想知道现在是否有任何解决方案不需要实现 ICommand 或使用像 MVVM Light 这样的框架。我想使用最简单的解决方案。
谢谢。
解决方案
为什么要避免使用 ICommand?
您可以编写自己的 ICommand 实现,但当 MVVM Light 拥有所有工具且易于使用时,这是不必要的。
如果您的应用程序如此简单,您的选择是:
忽略 MVVM 模式,只在后面的代码中实现事件处理程序
(我建议)将 MVVM Light 与默认的 ICommand 实现一起使用
公共 RelayCommand ExampleRelayCommand => new RelayCommand(ExampleMethod);
private void ExampleMethod() { }
如果你想要 EventArgs,那么你可以使用 PassEventArgsToCommand="True" 实现交互触发器和 EventToCommand,也可以使用 MVVM Light
public RelayCommand<RoutedEventArgs> EventRelayCommand => new RelayCommand<RoutedEventArgs>(EventRelayCommandMethod); private void EventRelayCommandMethod(RoutedEventArgs e) { }
然后,在 XAML 中的按钮内:
<Button Grid.Column="0" Content="Example">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<command:EventToCommand Command="{Binding EventRelayCommand}" PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
推荐阅读
- mysql - 防止 MySQL 自动为外键创建索引?
- python - 使用 BeautifulSoup 解析 h1 标签下的表并存储在 df
- leaflet - React Leaflet 创建多个地图
- assembly - 如何在没有可用操作系统的情况下获取硬件信息
- webstorm - WebStorm HTML - 当对象“打印机”的类型未知时,推断 Prettier 的“打印机”类型
- c++ - 如何在VS中的终端输出末尾删除“%”
- c++ - 搜索使用对应值稍后用于排序的键时的最佳复杂度
- java - 为随机二维 java 数组问题创建用户输入 - OutOfBoundsException
- html - 在 VScode 中,当我使用快捷键 Ctrl + / 在 HTML 文件中进行注释时,它不能像这样 "{{! }}"
- android - 从 GitLab 读取 build.gradle 上的环境变量