代码改变世界

Caliburn笔记-消息触发器(wpf框架)

2009-12-25 15:21  Clingingboy  阅读(1047)  评论(0编辑  收藏  举报

参考此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提供了一系类的消息触发器,如上的事件消息触发器

image

触发点

每个触发器都会提供相应的触发时机点,如事件触发器则提供了EventName属性

引发消息


image

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方法