在Caliburn Micro中将布尔值作为Action参数发送

时间:2011-11-07 10:35:18

标签: xaml c#-4.0 .net-4.0 caliburn.micro

这是我的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参数?

2 个答案:

答案 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>