CodeBail背后的Caliburn微处理消息

时间:2017-12-21 15:19:24

标签: wpf event-handling caliburn.micro

使用Caliburn Micro MVVM,我试图从后面的代码中控制ScrollViewer。我在viewmodel中处理了一个按钮。我还需要在ScrollViewer上调用方法,我相信只能通过view.xaml.cs代码后面的文件来完成。
我尝试了两件事。 1)EventHandler 2)Caliburn Micro IHandle

这两种方式似乎都没有达到文件背后的代码。

这里是选项2的代码

ViewModel:

_eventAggregator.PublishOnUIThread(new MyClickMessage(this));

代码隐藏(view.xaml.cs)文件:

public partial class MyClass: UserControl, IHandle<MyClickMessage>
{ 
public MyClass()
{
    InitializeComponent();
}

public void Handle(MyClickMessage message)
{
NOT HITTING HERE
}
}

非常感谢任何建议。

1 个答案:

答案 0 :(得分:2)

如果您在视图中实际订阅,它应该可以工作。试试这个:

public partial class MyClass : UserControl, IHandle<MyClickMessage>
{
    public MyClass()
    {
        InitializeComponent();
        IEventAggregator eventAggregator = IoC.Get<IEventAggregator>();
        eventAggregator.Subscribe(this);
    }

    public void Handle(MyClickMessage message)
    {
        //...
    }
}

它适用于我。