MouseLeftButtonDownイベントが呼ばれない
WPFのUI関連のイベントはXXXとPreviewXXXとがセットになっていて、まず、PreviewXXXが呼ばれ、その後、XXXが呼ばれます。
Button上でマウスの左ボタンを押したらコンソールに文字を表示するだけの簡単なサンプルなんですが、PreviewMouseLeftButtonDownイベントは呼ばれるのですが、MouseLeftButtonDownが呼ばれません。こんな基本的なところがバグっているとは思えないので自分のプログラムを疑ってみたのですが、問題ないように思えます。うーむ。
window1.xaml
<?xml version="1.0" encoding="Shift_JIS"?> <Window x:Class="MyFirstAvalonApp.Window1" xmlns="http://schemas.microsoft.com/winfx/avalon/2005" xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005" Title="MyButton" Width="200" Height="60"> <DockPanel> <Button MouseLeftButtonDown="OnButton" PreviewMouseLeftButtonDown="OnButtonPreview"> Hello, World </Button> </DockPanel> </Window>
window1.xaml.cs
using System; using System.Windows; using System.Windows.Controls; namespace MyFirstAvalonApp { public partial class Window1 : Window { public Window1 () { InitializeComponent (); } public void OnButton(object sender, RoutedEventArgs e) { Console.WriteLine ("OnButton"); } public void OnButtonPreview(object sender, RoutedEventArgs e) { Console.WriteLine ("OnButtonPreview"); } } }