Я пытаюсь связать событие с Caliburn Micro, и у меня возникают некоторые проблемы с получением правильных сообщений методу. Я хотел бы добавить возможность нажать клавишу 'Enter' после изменения значения в текстовом поле и выполнить тот же метод, к которому привязана кнопка рядом. Однако, независимо от того, какая клавиша нажата, я получаю следующие исключения:
Первое исключение исключения типа 'System.InvalidCastException' произошел в MyApp.exe
Первое случайное исключение типа 'System.Reflection.TargetInvocationException' произошел в mscorlib.dll
Первое случайное исключение типа "System.Reflection.TargetInvocationException" произошло в WindowsBase.dll
В предложении другого аналогичного вопроса Binding KeyDown Event Silverlight я попытался использовать ActionExecutionContext, но безрезультатно.
Вот xaml:
<TextBox Name="Threshold"
Margin="5"
Grid.Column="1"
>
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyDown">
<cal:ActionMessage MethodName="ExecuteFilterView">
<cal:Parameter Value="$executionContext"/>
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
И метод:
public void ExecuteFilterView(ActionExecutionContext context)
{
//Do stuff...
}
Я понимаю, что я мог бы сэкономить себе некоторые головные боли и просто сделать стандартный обработчик событий в коде, но это приложение является упражнением в MVVM и учится использовать Caliburn.Micro, поэтому я хотел бы придерживаться этого конкретный подход.
Я просто пытаюсь отправить неверную информацию из мероприятия? Неужели мой xaml неправильно закодирован, чтобы получить то, что я хочу? Или я пропустил что-то еще?