在WPF MVVM应用程序中,我需要多个控件具有相同的功能-例如某些按钮与某些菜单项具有相同的功能。与MVVM Light的RelayCommand相比,这简直是小菜一碟,但我现在使用的是Caliburn.Micro,其中几乎所有内容都基于约定。因此,两个控件不能具有相同的x:Name="AddItem"
,CM使用这些
最佳答案
是的,很简单,但是很冗长。您需要使用“长格式”。假设您在ViewModel上有一个方法IncrementCount
:
// Handling event
public void IncrementCount()
{
Count++;
}
并且您的视图具有:
<Button Name="ButtonOne">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="IncrementCount" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<Button Name="ButtonTwo">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="IncrementCount" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
这两个按钮都将调用您的
IncrementCount
方法。编辑
添加这些名称空间
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cal="http://www.caliburnproject.org"
您可能会使用上面的代码片段看到此Caliburn starting project。
关于wpf - 使用Caliburn.Micro时用于多个控件的相同方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38998924/