デフォルトのままでは図形はキーイベントを受け付けません。認識するためにFocusableプロパティをTrueに設定し、そのうえでフォーカスを与えます。 フォーカスがなければキーイベントを認識しないことに注意してください。サンプルコードでは、クリックされたタイミングで図形にフォーカスを与えています。
XAML
<window x:class="WPF_RectangleWithEvent.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" title="Window1" height="327" width="624" mouseleftbuttondown="Window_MouseLeftButtonDown" mouseleftbuttonup="Window_MouseLeftButtonUp"> <canvas height="310" width="598" x:name="LayoutRoot"> <ellipse focusable="True" keydown="Ellipse_KeyDown" mouseleftbuttondown="Ellipse_MouseLeftButtonDown" width="100" height="150" fill="Blue" /> </canvas> </window>
コード
private void Ellipse_KeyDown(object sender, KeyEventArgs e) { MessageBox.Show(e.Key.ToString()); } private void Ellipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Ellipse item = (Ellipse)sender; item.Focus(); }