2013-03-15 58 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。

希望這有助於某人:)