代码隐藏中的 Caliburn 微处理消息
Caliburn Micro Handling Message in Code Behind
使用 Caliburn Micro MVVM,我试图从代码后面控制 ScrollViewer
。我有一个在视图模型中处理的按钮单击。我还需要在 ScrollViewer
上调用方法,我相信这只能从 view.xaml.cs 代码隐藏文件中完成。
我试过两件事。
1) 事件处理器
2) Caliburn 微型 IHandle
这两种方式似乎都无法找到文件背后的代码。
这是选项 2 的代码
视图模型:
_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
}
}
非常感谢任何建议。
如果您实际订阅了视图,它应该可以工作。试试这个:
public partial class MyClass : UserControl, IHandle<MyClickMessage>
{
public MyClass()
{
InitializeComponent();
IEventAggregator eventAggregator = IoC.Get<IEventAggregator>();
eventAggregator.Subscribe(this);
}
public void Handle(MyClickMessage message)
{
//...
}
}
对我来说效果很好。
使用 Caliburn Micro MVVM,我试图从代码后面控制 ScrollViewer
。我有一个在视图模型中处理的按钮单击。我还需要在 ScrollViewer
上调用方法,我相信这只能从 view.xaml.cs 代码隐藏文件中完成。
我试过两件事。
1) 事件处理器
2) Caliburn 微型 IHandle
这两种方式似乎都无法找到文件背后的代码。
这是选项 2 的代码
视图模型:
_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
}
}
非常感谢任何建议。
如果您实际订阅了视图,它应该可以工作。试试这个:
public partial class MyClass : UserControl, IHandle<MyClickMessage>
{
public MyClass()
{
InitializeComponent();
IEventAggregator eventAggregator = IoC.Get<IEventAggregator>();
eventAggregator.Subscribe(this);
}
public void Handle(MyClickMessage message)
{
//...
}
}
对我来说效果很好。