wpf - 使用Caliburn.Micro时用于多个控件的相同方法

标签 wpf mvvm mvvm-light caliburn.micro relaycommand

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

最佳答案

是的,很简单,但是很冗长。您需要使用“长格式”。假设您在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/

相关文章:

wpf - 一个模型实体,多个页面 -> 多个 View ?多个 View 模型?

c# - 绑定(bind) UserControl 的数据上下文

wpf - 具有DataTemplate的Window.Content

wpf - 微调控件

.net - 如何防止新的 WPF 表单窃取焦点?

c# - datagridview 组合框列更改绑定(bind)列表数据 --> 自动显示

c# - 是否可以使用带有附加事件的 Microsoft.Xaml.Behaviors.EventTrigger 来调用命令?

c# - 从代码访问 MVVM Light ViewModelLocator

.net - Wpf 用户安全策略

mvvm-light - RelayCommand 和 WeakReference