Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

RoutedCommandでコマンドバインディングを実装する

アプリ実行

起動


Ctrl + S を押下


ソースコード

App.xaml
<Application x:Class="WpfApplication7.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
</Application>
MainWindow.xaml
<Window x:Class="WpfApplication7.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:l="clr-namespace:WpfApplication7"
        Title="MainWindow" Height="100" Width="150">
    <!-- Ctrl + S で保存 -->
    <Window.InputBindings>
        <KeyBinding
            Key="S"
            Modifiers="Control"
            Command="{x:Static l:MainWindow.SaveCommand}" />
    </Window.InputBindings>
</Window>
MainWindow.xaml.cs
using System.Windows;
using System.Windows.Input;

namespace WpfApplication7 {
    public partial class MainWindow : Window {
        public static readonly ICommand SaveCommand
            = new RoutedCommand("Save", typeof(MainWindow));

        public MainWindow() {
            InitializeComponent();

            CommandBindings.Add(
                new CommandBinding(SaveCommand, (s, e) =>
                    MessageBox.Show("保存されました。")));
        }
    }
}

参考

RoutedCommand クラス (System.Windows.Input)
ICommand を実装し、要素ツリーを通じてルーティングされるコマンドを定義します。