c# - 将 UI 元素单击连接到 ViewModel 方法?
问题描述
使用Caliburn.Micro,我可以创建一个按钮,使其在我的 ViewModel 中触发一个方法,而无需实际声明任何 ICommand 属性。
MyView.xaml
<UserControl [...]>
<Button x:Name="Foo" />
</UserControl>
MyViewModel.cs
public class MyViewModel : PropertyChangedBase
{
public void Foo()
{
MessageBox.Show("Hello world");
}
}
如果不使用代码隐藏——我可以用网格做类似的事情吗?还是任何其他 UI 元素?也就是说,当单击特定的 UI 元素时,执行 ViewModel 上的方法,而无需声明任何 ICommand 属性?
我试过这样的语法,但似乎什么也没发生。
<UserControl [...]>
<Border cal:Message.Attach="[Event Click] = [Action Foo()]">
<TextBlock Text="Click Me" />
</Border>
</UserControl>
解决方案
ABorder
没有任何Click
事件,但您可以处理它的PreviewMouseLeftButtonDown
事件:
<Border cal:Message.Attach="[Event PreviewMouseLeftButtonDown] = [Action Foo()]">
<TextBlock Text="Click Me" />
</Border>
推荐阅读
- python - 如何在python中使用pandas read_csv自动跳过具有非浮动值的行?
- c# - 多任务,如何同时在foreach中运行多个对象?
- jpa - JPA标准检查输入日期范围是否存在
- git - 推送后重写主/主分支上的最后一次提交消息?
- oracle - Oracle APEX 交互式报告过滤器错误
- tensorflow - 将静态类型的输入传递给 tensorflow 服务
- logging - 如何停止 BitBake 进度记录?
- django - 将 Django 从 3.0.8 升级到 3.1.5 并将频道从 2.4.0 升级到 3.0.3 后,线程停止工作
- javascript - 如何在 contenteditable div 中抓取某些单词
- apache-spark - 私人神器K8s镜像拉取