0

我正在尝试让键绑定导致视图模型中的事件。不幸的是,我已经搜索了一段时间,但到目前为止还没有遇到任何有效的解决方案。

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

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

1 回答 1

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

于 2012-10-04T10:03:38.673 回答