まず問題のコード
【XAML】Window1.xaml
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid MouseLeftButtonDown="Grid_MouseLeftButtonDown">
</Grid>
</Window>
【C#】Window1.xaml.cs
using System.Windows;
using System.Windows.Input;
namespace WpfApplication1 {
/// <summary>
/// Window1.xaml の相互作用ロジック
/// </summary>
public partial class Window1 :Window {
public Window1() {
InitializeComponent();
}
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
MessageBox.Show("Clicked!");
}
}
}
フォームをクリックしても何も起こらない。
しかし、Window1.xamlをこうすると…
【XAML】
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid MouseLeftButtonDown="Grid_MouseLeftButtonDown" Background="White">
</Grid>
</Window>
GridのBackgroundプロパティにWhiteを指定している。
こうすると意図した通りにメッセージボックスが表示される。
また、Window1.xamlではなくWindow1.xaml.csのコンストラクタで
GridのBackgroundにBrushes.Whiteを指定してもメッセージボックスが表示された。
色が無いコントロールはマウスイベントを拾えない!?仕様なのかバグなのか…。