2013-03-15 53 views
1

我想在任何绑定参数的改变卡利微动作绑定

绑定使用长语法卡利微设置为来电CanExpressionSave方法。

<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){} 
+0

你是否在这些属性更改时为属性更改了通知?通过在VM中实现'INotifyPropertyChange'或从'Caliburn.Micro.PropertyChangedBase'继承并调用'NotifyOfPropertyChange((()=> SomeProperty);' – Charleh 2013-03-15 11:12:53

+0

感谢您的快速响应。我发现错误,但不能在8小时前回答我的问题:) – 2013-03-15 11:27:22

+0

问题出现在绑定中的几个框架中。 我以为我从参数中获取正确的数据,因为我预计没有值,但我得到的值因为错误的绑定。 xaml和上面的代码是有效的,因为CanExpressionSave将被Caliburn隐式绑定。这意味着对任何绑定属性的任何更改都会触发CanExpressionSave。 希望这可以帮助某人:) – 2013-03-15 11:30:41

回答

0

问题是在绑定几个外壳。

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

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

希望这有助于某人:)