開発ツール:Visual Studio、言語:C#、プロジェクト:WPFアプリケーション
ウィンドウに適当なコントロールを作成し、イベントを追加した。
<TextBox x:Name="TextBox1" (略) KeyDown="TextBox_KeyDown"/>
普通なら「TextBox_KeyDown」の部分にカーソルを移動させて「F12」キーを押すとイベントの定義に移動する。
private void TextBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
}
はずなのだが「Ensure Event Failed」というエラーが出て移動できなかった。
とりあえず「Ensure Event Failed」で調べてみたところStack Overflowに同じような質問があった。
http://stackoverflow.com/questions/33094622/ensure-event-failed-error-occur
このQ&AのケースだとXAMLファイルに「x:Class」が無いですよ、ということだった。
「x:Class」属性とはXAMLファイルとクラスを結合させるために必要で、通常であればMainWindow.xamlファイルを作成すると要素に「x:Class="APP名.MainWindow"」が追加されている。
自分のソースを確認してみるとなぜか「x:Class=" APP名.MainWindow"」という感じで余計な半角スペースが一つ入っており、それが原因で該当のクラスが無い、と判断されていたらしい。
実際に半角スペースを削除して「x:Class="APP名.MainWindow"」とすると問題なくコードに移動することができた。
なぜ半角スペースが入っていたかについては、謎。
今までは大丈夫だったのかな?とも思うが例えばすでにイベントが追加された後で「x:Class=" APP名.MainWindow"」みたいになった場合、「F12」キーで移動できないだけでビルドエラーにはならないので特に問題はなかったのかもしれない。