这是我的XAML视图(为了便于阅读,省略了一些代码):
<Window ... xmlns:c="http://www.caliburnproject.org">
<Button Content="Close without saving" c:Message.Attach="Close(false)" />
<Button Content="Save and Close" c:Message.Attach="Close(true)" />
</Window>
这里是ViewModel中的代码:
public void Close(bool save)
{
if (save)
{
// save the data
}
TryClose();
}
这当然不起作用 - 因为动作参数“true”和“false”不是XAML中的对象或对象属性。我怎样才能使这个工作,并在Caliburn Micro中发送一个布尔作为Action参数?
答案 0 :(得分:23)
如果在参数名称周围加上单引号,它将为您正确转换。
<Button Content="Close without saving"
c:Message.Attach="Close('false')" />
<Button Content="Save and Close"
c:Message.Attach="Close('true')" />
答案 1 :(得分:1)
您可以尝试使用交互性+触发器:
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cl:ActionMessage MethodName="MyMethod" >
<cl:Parameter Value="True">
</cl:Parameter>
</cl:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>