我正在尝试为附加事件创建一个动作,我认为CM不支持开箱即用。
此问题/答案显示了如何执行此操作
using attached events with caliburn micro Message.Attach
但它需要使用long CM ActionMessage语法,但是,当我尝试这样做时,我得到一个'XML名称空间中不存在'ActionMessage',其中blah是CM命名空间。
所有示例都显示了这种语法;目前我只是将代码放入视图中,将DataContext转换为ViewModel类型并调用适当的方法(我不喜欢这种方法,因为它将视图耦合到VM并且它与其余的不一致应用程序)
任何人都有任何想法,为什么我看不到ActionMessage?
e.g。
<i:Interaction.Triggers>
<Helpers:RoutedEventTrigger RoutedEvent="Helpers:DataChanging.Changing">
<!-- this line throws the error -->
<cal:ActionMessage MethodName="SelectedDataChanged">
<cal:Parameter Value="$eventargs" />
</cal:ActionMessage>
</Helpers:RoutedEventTrigger>
</i:Interaction.Triggers>
我正在使用SL5和CM的SL5组装,但没有快乐......
有趣的是,如果我尝试在其他地方使用'ActionMessage',它似乎可以正确解决,但当然它在我想要的地方之外并不是很有用!
更新
这是视图名称空间def
xmlns:cal="http://www.caliburnproject.org"
我已尝试过实际的程序集限定命名空间和其他组合,所有这些都有相同的问题
答案 0 :(得分:1)
我之前从未使用过ActionMessage语法,但只要控件有一个您尝试附加的事件,您就尝试了以下语法:
&lt; Button Content =“Remove”cal:Message.Attach =“[Event Click] = [Action Remove($ dataContext)]”/&gt;
我已经能够在各种控件上使用它而没有任何问题。
答案 1 :(得分:0)
我遇到了类似的问题,我必须在调用 ActionMessage 之前添加一个额外的 xaml 标记,我的相应示例才能使其工作:
<i:Interaction.Triggers>
<Helpers:RoutedEventTrigger RoutedEvent="Helpers:DataChanging.Changing">
<cal:Action.Target>
<cal:ActionMessage MethodName="SelectedDataChanged">
<cal:Parameter Value="$eventargs"/>
</cal:ActionMessage>
</cal:Action.Target>
</Helpers:RoutedEventTrigger RoutedEvent="Helpers:DataChanging.Changing">
</i:Interaction.Triggers>