将 UI 元素点击连接到 ViewModel 方法?

Connect UI element click to ViewModel method?

使用 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 元素? IE。使其在单击特定 UI 元素时执行 ViewModel 上的方法,而无需声明任何 ICommand 属性?

我试过这样的语法,但似乎没有任何反应。

<UserControl [...]>
    <Border cal:Message.Attach="[Event Click] = [Action Foo()]">
        <TextBlock Text="Click Me" />
    </Border>
</UserControl>

A Border 没有任何 Click 事件,但您可以处理它的 PreviewMouseLeftButtonDown 事件:

<Border cal:Message.Attach="[Event PreviewMouseLeftButtonDown] = [Action Foo()]">
    <TextBlock Text="Click Me" />
</Border>