2013-03-15 2 views
1

Я хочу, чтобы вызвать метод CanExpressionSave, когда какие-либо из переплетены параметров изменяетсяпривязок действия Caliburn Micro

Наручников устанавливаются с использованием длинного синтаксиса в Caliburn микро.

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

Codebehind:

 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

Вы изменили уведомление об изменении свойств для этих свойств при их изменении? Либо путем внедрения 'INotifyPropertyChange', либо наследования из' Caliburn.Micro.PropertyChangedBase' в вашей виртуальной машине и вызова 'NotifyOfPropertyChange (() => SomeProperty);' – Charleh

+0

Благодарим вас за быстрый ответ. Я нашел ошибку, но не могу ответить на мой вопрос до 8 часов :) –

+0

Проблема была в нескольких корпусах в привязках. Я думал, что получаю нужные данные из параметров, потому что я не ожидал никаких значений, кроме значений, которые я получил, из-за неправильных привязок. Xaml и приведенный выше код действительны, так как CanExpressionSave будет привязан неявно Caliburn. Это означает, что любое изменение любого связанного свойства вызовет CanExpressionSave. Надеюсь, это поможет кому-то :) –

ответ

0

Проблема была в несколько оболочек в переплетах.

Я думал, что получаю нужные данные из параметров, потому что я не ожидал никаких значений, кроме значений, которые я получил, из-за неправильных привязок.

Xaml и код выше действительны, так как CanExpressionSave будет неявно привязана Caliburn. Это означает, что любое изменение любого связанного свойства вызовет CanExpressionSave.

Надеюсь, это поможет кому-то :)

Смежные вопросы