0
<MenuItem x:Name="newProjectButton" Click="OnNewProjectButton_Click" Header="_New Project">
</MenuItem>

Alt+Nが押されるたびにOnNewProjectButton_Clickを呼び出したい。残念ながら、上記のコードは機能しません。これは、メニューが展開されている(つまりフォーカスがある)場合にのみハンドラーが呼び出されるためです。

4

2 に答える 2

1

ApplicationCommands.Newはすでにその機能を提供しているため、これに使用できます。デフォルトのWPFコマンドモデルはかなりクールです。デフォルトのコマンドモデルを使用しないことにした場合でも、その2番目のリンクは、必要な入力ジェスチャを接続する方法を示しているはずです。

編集:これがサンプル実装です...

<Window.CommandBindings>
    <CommandBinding Command="ApplicationCommands.New" 
                    CanExecute="NewApplicationCommand_CanExecute"
                    Executed="NewApplicationCommand_Executed" />
</Window.CommandBindings>

<Grid>

    <Menu>
        <MenuItem Header="_File">
            <MenuItem Command="ApplicationCommands.New" Header="_New Project"  />
        </MenuItem>
    </Menu>

</Grid>

そして背後にあるコード...

    private void NewApplicationCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
        // Whatever logic you use to determine whether or not your
        // command is enabled.  I'm setting it to true for now so 
        // the command will always be enabled.
        e.CanExecute = true;
    }

    private void NewApplicationCommand_Executed(object sender, ExecutedRoutedEventArgs e)
    {
        Console.WriteLine("New command executed");
    }
于 2010-01-18T12:18:29.207 に答える
0

メニュー項目にInputGestureTextを設定するのがわかります

<MenuItem Header="Paste" 
 ToolTip="Paste the selected text to text box" 
 InputGestureText="Ctrl+V" />

ただし、WinFormsとは異なり、「アプリケーションは、アクションを実行するためにユーザーの入力を処理する必要があります」

したがって、WPFコマンドを使用することを検討してください。これは自動的に行われます。Windows PresentationFoundationUnleashedがこれをうまくカバーしていることがわかりました。

于 2010-01-18T12:28:17.700 に答える