我正在尝试使用键绑定导致视图模型中的事件。不幸的是,我已经搜索了一段时间并且没有找到任何迄今为止有效的解决方案。
这是我基本上试图实现的:
<i:Interaction.Triggers>
<i:EventTrigger EventName="createNew">
<cal:ActionMessage MethodName="newCustomer" />
</i:EventTrigger>
</i:Interaction.Triggers>
我想要一种提供“热键”的方法,以允许用户在视图模型中实现newCustomer事件。到目前为止,它甚至都无法进入视图模型。如果我附加了EventName =“KeyDown”,如果按下任何键,它会很有效,但我试图锁定一个键。
我将补充说,视图模型中的代码看起来像这样。
public void createNew(object sender, KeyEventArgs e)
{ if (e.Key == Key.F9)
{
addCustomer();
} }
答案 0 :(得分:0)
不太确定您使用的是什么控件,但出于示例目的,我将使用文本框... 不完全确定这是否会有所帮助,但我希望它能做到:
观点:
<TextBox x:Name="MyTextBox" TextAlignment="Left" FontSize="10" Width="240" cal:Message.Attach="[Event KeyUp]=[Action ExecuteAction($executionContext)]"/>
ViewModel:
*例如,我将使用“Enter”作为您希望执行操作的单个键。
public void ExecuteAction(ActionExecutionContext context)
{
var eventArgs = (KeyEventArgs)context.EventArgs;
if (eventArgs.Key != Key.Enter) return;
//Execute Actions...
}
这应该在你想要的控件上的每个按键上激活代码,如果键不等于你指定的任何键,它将不会做任何事情......
如果我想休息,也许我只是不理解这个问题:D