デフォルトのままでは図形はキーイベントを受け付けません。認識するために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();
}
