投稿ではわかりませんが、イベントをコントロールからビューのメソッドにバインドしたいようです
その場合:
<SomeControl cal:Message.Attach="[Event SomeEvent] = [Action SomeMethod($eventArgs)]" />
逆の場合は、イベントアグリゲーターを使用できます(ビューはイベントをサブスクライブできます...なぜ、まだ分離されています...)
VM:
SomeEventAggregator.Publish(new SomeMessageInstanceThatTheViewWillSubscribeTo());
意見:
class SomeView : UserControl, IHandle<SomeMessageInstanceThatTheViewWillSubscribeTo>
// dont forget to...
SomeEventAggregator.Subscribe(this);
または、ビューにインターフェースを実装します
class SomeView : UserControl, IAcceptSomeNotificationMessage
{
public void Notify() { // blah
}
}
VM:
class SomeViewModel : Screen // whatever
{
void SomeMethod()
{
// The VM should be IViewAware so will implement GetView()
var view = GetView();
if(view is IAcceptSomeNotificationMessage)
(view as IAcceptSomeNotificationMessage).Notify();
}
}
上記のいずれかを選択してください-もっと多くの方法があると確信しています。私は通常、イベントアグリゲーターを使用します。もちろん、使用しているIoCの量と、すべてがどの程度分離されているかによって異なります。