使用Caliburn.Micro时,多个控件的方法相同

时间:2016-08-17 14:03:49

标签: wpf mvvm mvvm-light caliburn.micro relaycommand

在WPF MVVM应用程序中,我需要多个控件的相同功能 - 例如某些按钮与某些菜单项相同。它与MVVM Light的RelayCommand是小菜一碟,但我现在使用Caliburn.Micro,几乎所有东西都基于惯例。因此,两个控件不能具有相同的x:Name="AddItem",CM使用它来确定在ViewModel中执行的方法。有没有简单方法来解决这个问题?

1 个答案:

答案 0 :(得分:3)

是的,它很简单,但很冗长。您需要使用"长格式"。我们假设您的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"

您可以使用上面的代码段看到starting project