将 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>
使用 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>