キーボード入力のサンプル
プロジェクトの作成
dotnet new wpf -n KeyPress
cd KeyPress
dotnet add package Microsoft.Xaml.Behaviors.Wpf
dotnet add package ReactiveProperty.WPF
code .
ソースコード
ファイル名:MainWindow.xaml
<Window x:Class="KeyPress.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i="clr-namespace:Microsoft.Xaml.Behaviors;assembly=Microsoft.Xaml.Behaviors"
xmlns:interactivity="clr-namespace:Reactive.Bindings.Interactivity;assembly=ReactiveProperty.WPF"
xmlns:local="clr-namespace:KeyPress"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.DataContext>
<local:MainWindowViewModel />
</Window.DataContext>
<Window.InputBindings>
<KeyBinding
Gesture="CTRL+A"
Command="{Binding AllSelectCommand}"/>
</Window.InputBindings>
<Grid>
</Grid>
</Window>
ファイル名:MainWindowViewModel.cs
using System;
using System.Windows;
using System.ComponentModel;
using System.Reactive.Disposables;
using Reactive.Bindings;
using Reactive.Bindings.Extensions;
namespace KeyPress
{
public class MainWindowViewModel : INotifyPropertyChanged, IDisposable
{
public ReactiveCommand AllSelectCommand { get; }
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string name)
{
if (PropertyChanged == null) return;
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
private CompositeDisposable Disposable { get; } = new ();
public MainWindowViewModel()
{
PropertyChanged += (o, e) => {};
AllSelectCommand = new ReactiveCommand()
.WithSubscribe (
() => {
MessageBox.Show("Ctrl+Aが押された");
})
.AddTo(Disposable);
}
public void Dispose() => Disposable.Dispose();
}
}
他のソースファイルに変更なし。
実行
dotnet run
警告
E:\csharp\wpf\KeyPress\MainWindowViewModel.cs(13,50): warning CS8612: 'event PropertyChangedEventHandler MainWindowViewModel.PropertyChanged' の型における参照型の Null 許容性が、暗黙的に実装されるメンバー 'event PropertyChangedEventHandler? INotifyPropertyChanged.PropertyChanged' と一致しません。 [E:\csharp\wpf\KeyPress\KeyPress
_hqopt1c1_wpftmp.csproj]
E:\csharp\wpf\KeyPress\MainWindowViewModel.cs(13,50): warning CS8612: 'event PropertyChangedEventHandler MainWindowViewModel.PropertyChanged' の型における参照型の Null 許容性が、暗黙的に実装されるメンバー 'event PropertyChangedEventHandler? INotifyPropertyChanged.PropertyChanged' と一致しません。 [E:\csharp\wpf\KeyPress\KeyPress
.csproj]
2 個の警告
コメント