绑定KeyDown事件Silverlight

时间:2012-10-03 18:38:35

标签: silverlight caliburn.micro key-bindings

我正在尝试使用键绑定导致视图模型中的事件。不幸的是,我已经搜索了一段时间并且没有找到任何迄今为止有效的解决方案。

这是我基本上试图实现的:

<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();  
         } }

1 个答案:

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