Caliburn Micro动作绑定

时间:2013-03-15 10:16:33

标签: wpf caliburn.micro

我希望在更改任何绑定参数时调用CanExpressionSave方法

使用caliburn micro中的长语法设置绑定。

<controls:ImageButton DockPanel.Dock="Right" Image="/Resources/Save.png" AlternativeImage="/Resources/SaveDisabled.png" 
                      Text="Save" Style="{StaticResource ControlButtonStyle}" x:Name="ExpressionSave">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <cal:ActionMessage MethodName="ExpressionSave">
                <cal:Parameter Value="{Binding ElementName=firsttag, Path=Text}"></cal:Parameter>
                <cal:Parameter Value="{Binding ElementName=firstoperation, Path=Content}"></cal:Parameter>
                <cal:Parameter Value="{Binding ElementName=secondtag, Path=Text}"></cal:Parameter>
                <cal:Parameter Value="{Binding ElementName=SecondOperation, Path=Content}"></cal:Parameter>
                <cal:Parameter Value="{Binding ElementName=thirdtag, Path=Text}"></cal:Parameter>
            </cal:ActionMessage>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</controls:ImageButton>

代码隐藏:

        public void ExpressionSave(string firsttag, string firstoperation, string secondtag,
        string secondoperation, string thirdtag){ }

    public bool CanExpressionSave(string firsttag, string firstoperation, string secondtag,
        string secondoperation, string thirdtag){}

1 个答案:

答案 0 :(得分:0)

问题在于绑定中的几个外壳。

我以为我从参数中获取了正确的数据,因为我预期没有值,但是因为错误的绑定而得到的值。

xaml和上面的代码是有效的,因为CanExpressionSave将被Caliburn隐式绑定。这意味着对任何绑定属性的任何更改都将触发CanExpressionSave。

希望这有助于某人:)