Я хочу, чтобы вызвать метод 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){}
Вы изменили уведомление об изменении свойств для этих свойств при их изменении? Либо путем внедрения 'INotifyPropertyChange', либо наследования из' Caliburn.Micro.PropertyChangedBase' в вашей виртуальной машине и вызова 'NotifyOfPropertyChange (() => SomeProperty);' – Charleh
Благодарим вас за быстрый ответ. Я нашел ошибку, но не могу ответить на мой вопрос до 8 часов :) –
Проблема была в нескольких корпусах в привязках. Я думал, что получаю нужные данные из параметров, потому что я не ожидал никаких значений, кроме значений, которые я получил, из-за неправильных привязок. Xaml и приведенный выше код действительны, так как CanExpressionSave будет привязан неявно Caliburn. Это означает, что любое изменение любого связанного свойства вызовет CanExpressionSave. Надеюсь, это поможет кому-то :) –