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 に答える