不通過後確定,但它聽起來就像你想在你的看法
在這種情況下,從控制的方法的事件綁定:
<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的多少以及所有事情是如何分離的。
謝謝,結束了我處理它有點不同。我subclassed控制並添加一個依賴屬性屬性在該控件上,並在我的表單上使用。在屬性改變的事件中,我調用了需要調用的基本方法。在這種情況下,這是一個更優雅的解決方案。但謝謝你的答案。 – dblwizard