参考此http://caliburn.codeplex.com/wikipage?title=Message%20Triggers&referringTitle=Documentation
先看下面一段xaml
<Button Content="Divide (Trigger Collection w/ Explicit Parameters)"> <cal:Message.Triggers> <cal:RoutedMessageTriggerCollection> <cal:EventMessageTrigger EventName="Click"> <cal:EventMessageTrigger.Message> <cal:ActionMessage MethodName="Divide" OutcomePath="DivideResult.Text"> <!--Note: The declaration of parameters is different from Silverlight.--> <cal:Parameter Value="{Binding ElementName=left, Path=Text}"/> <cal:Parameter Value="{Binding ElementName=right, Path=Text}"/> </cal:ActionMessage> </cal:EventMessageTrigger.Message> </cal:EventMessageTrigger> </cal:RoutedMessageTriggerCollection> </cal:Message.Triggers> </Button>
caliburn提供了一系类的消息触发器,如上的事件消息触发器
触发点
每个触发器都会提供相应的触发时机点,如事件触发器则提供了EventName属性
引发消息
IRoutedMessage用于触发器发送消息,即引发的方法行为.如下代码片段,注意均为DependencyObject
<cal:ActionMessage MethodName="Divide" OutcomePath="DivideResult.Text"> <!--Note: The declaration of parameters is different from Silverlight.--> <cal:Parameter Value="{Binding ElementName=left, Path=Text}"/> <cal:Parameter Value="{Binding ElementName=right, Path=Text}"/> </cal:ActionMessage>
建立好trigger集合以后,然后会去触发IMessageTrigger的Attach方法